场合
用户从我的应用程序收到可点击的通知。如果单击它,它将启动应用程序并根据其附带的数据将用户重定向到特定的片段。当应用程序运行时,这很好用
在Android 7上运行
问题
如果应用程序未运行,然后通过通知启动,则启动和重定向工作正常。但是,如果在应用程序仍在运行时收到另一个通知,则它将不再起作用。
通知提供的唯一功能是关闭通知抽屉。它被点击之后甚至不再消失了。其Intent中定义的Activity的onCreate或onResume也不会被调用。它似乎忽略了所有设置,并在点击后关闭导航抽屉
通知代码
private void showNotification(String message, PushEntity.ActionEnum actionEnum, Map<String, String> params) {
NotificationManager mNotificationManager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
Intent startIntent = new Intent(getApplicationContext(), MainActivity.class);
if (params != null) {
for (Map.Entry<String, String> entry : params.entrySet()) {
startIntent.putExtra(entry.getKey(), entry.getValue());
}
}
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, startIntent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_default_notification)
.setContentTitle(getResources().getString(R.string.app_name))
.setStyle(new NotificationCompat.BigTextStyle().bigText(message))
.setContentText(message)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_MAX);
mBuilder.setContentIntent(contentIntent);
mNotificationManager.notify(pushNotificationId, mBuilder.build());
到目前为止我尝试了什么
android:exported="true"
MainActivity条目PendingIntent.FLAG_UPDATE_CURRENT
代替FLAG_ONE_SHOT
问题
任何人都可以向我解释为什么这种行为只会在应用程序通过通知启动后发生,而不是在它已经运行时发生?
有没有人知道如何解决这个问题?