Android 启动应用程序时通知保持打开状态
Android notification stays open when launching app
我可以通过 AlarmManager 排队和启动通知,我也可以在单击通知时启动我的应用程序。不幸的是,当应用程序启动时,通知并没有自行删除。
通知设置:
Intent intent = new Intent(mainActivity, NotificationPublisher.class);
intent.setAction("handle");
PendingIntent pIntent = PendingIntent.getBroadcast(mainActivity, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Notification.Builder builder = new Notification.Builder(mainActivity)
.setSmallIcon(R.drawable.phone)
.setContentTitle(title)
.setContentText(textContent)
.setAutoCancel(true)
.setContentIntent(pIntent);
return builder.getNotification();
通知点击广播点击此功能:
void handle(Context context, Intent intent) {
System.out.println("handle");
Context mainContext = Extension.mainContext;
Activity mainActivity = Extension.mainActivity;
Intent launchIntent = new Intent(mainContext, mainActivity.getClass());
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchIntent);
}
句柄函数将启动 activity 但不会从状态栏中删除通知。有趣的是...如果我删除对 startActivity 的调用,通知将关闭。
我尝试过的事情:
- 手动设置自动取消标志
- 改用 builder.build()
- NotificationManger 取消(id)and/or cancelAll
- 使用NotificationCompat.Builder
- 使用 setContentIntent 的常规启动意图而不是手动调用 startActivity
根据你的问题的这个陈述:
Interestingly... If I remove the call to startActivity, the
notification will close.
我假设您的 Activity
只是转发了 Notification
。
我通过在点击通知后 300 毫秒启动我的应用程序来解决这个问题。
我可以通过 AlarmManager 排队和启动通知,我也可以在单击通知时启动我的应用程序。不幸的是,当应用程序启动时,通知并没有自行删除。
通知设置:
Intent intent = new Intent(mainActivity, NotificationPublisher.class);
intent.setAction("handle");
PendingIntent pIntent = PendingIntent.getBroadcast(mainActivity, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
Notification.Builder builder = new Notification.Builder(mainActivity)
.setSmallIcon(R.drawable.phone)
.setContentTitle(title)
.setContentText(textContent)
.setAutoCancel(true)
.setContentIntent(pIntent);
return builder.getNotification();
通知点击广播点击此功能:
void handle(Context context, Intent intent) {
System.out.println("handle");
Context mainContext = Extension.mainContext;
Activity mainActivity = Extension.mainActivity;
Intent launchIntent = new Intent(mainContext, mainActivity.getClass());
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchIntent);
}
句柄函数将启动 activity 但不会从状态栏中删除通知。有趣的是...如果我删除对 startActivity 的调用,通知将关闭。
我尝试过的事情:
- 手动设置自动取消标志
- 改用 builder.build()
- NotificationManger 取消(id)and/or cancelAll
- 使用NotificationCompat.Builder
- 使用 setContentIntent 的常规启动意图而不是手动调用 startActivity
根据你的问题的这个陈述:
Interestingly... If I remove the call to startActivity, the notification will close.
我假设您的 Activity
只是转发了 Notification
。
我通过在点击通知后 300 毫秒启动我的应用程序来解决这个问题。