【发布时间】:2018-03-12 18:42:19
【问题描述】:
我有两个活动 MainActivity 和 ReceivedMessageActivity。以及一个后台服务,用于从中获取 Context 并传递给 SMSReceiver,该服务扩展 BroadcastReceiver 以接收短信。当收到短信时 SMSReceiver 创建通知。我希望当我单击通知时,如果应用程序未运行,则打开 ReceivedMessageActivity,当应用程序运行时,如果 ReceivedMessageActivity 已打开,请不要按意图创建新的 Activity,而只是将 ReceivedMessageActivity 放在前面。我将清单中的 launchMode 设置为 singleTop ,因为 MainActivity 正在工作,但 ReceivedMessageActivity 不起作用!我将通知意图标志设置为 FLAG_ACTIVITY_BROUGHT_TO_FRONT|Intent.FLAG_ACTIVITY_SINGLE_TOP 和 FLAG_ACTIVITY_CLEAR_TOP 但不起作用。我将 ReceivedMessageActivity 的 manifest launchMode 设置为 singleInstance 它的工作,但是当我手动午餐 ReceivedMessageActivity 时,它的默认动画不起作用(从右到左动画)。这是我的通知代码:
public void addNotifiction(String title, String message) {
NotificationCompat.Builder builder = new
NotificationCompat.Builder(context);
builder.setContentTitle(title);
builder.setContentText(message);
builder.setStyle(new
NotificationCompat.BigTextStyle().bigText(message));
builder.setAutoCancel(true);
builder.setDefaults(Notification.DEFAULT_ALL);
builder.setSmallIcon(R.drawable.edit_icon);
builder.setCategory(NotificationCompat.CATEGORY_MESSAGE);
builder.setPriority(NotificationCompat.PRIORITY_MAX);
Intent notifactionIntent = new Intent(context,
ReceivedMessagesActivity.class);
notifactionIntent
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
TaskStackBuilder taskStackBuilder=TaskStackBuilder.create(context);
taskStackBuilder.addNextIntentWithParentStack(notifictionIntent);
PendingIntent contentPendingIntent= taskStackBuilder.getPendingIntent (0,PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(contentPendingIntent);
NotificationManager manager = (NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE);
manager.notify(NOTIFICATION_ID++, builder.build());
}
我的上下文是 MyService 类上下文:
Context context=MyService.context
EDIT:我发现当我使用android:parentActivityName=".MainActivity"
在接收消息活动的清单中发生这种情况,当我点击通知并打开接收消息活动时,我的应用程序创建新的接收消息活动为什么?
【问题讨论】:
-
在应用处于后台时尝试使用
implcit intent和未决意图! -
我们如何理解非法意图?
-
intent 用
intent-filter初始化给一个活动 P.S idkTaskStackBuilder是什么
标签: android notifications notificationmanager