我目前面临的问题是为两种不同的活动设置待定的行动通知。
我有一个ParentActivity和一个ChildActivity。如果ChildActivity当前正在运行或暂停,我希望在通知时打开它,否则启动ParentActivity。
我试过这个:
.........
Intent resultIntent = new Intent(this, ChildActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ParentActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
.............上面说的不是我的工作。每次ChildActivity开始时单击通知。
法鲁克回答说,我也不想这样。通过检查a的当前状态来创建通知的挂起意图将无法工作。假设在ChildActivity运行时创建了通知,但是在创建通知之后,用户就会杀死应用程序。因此,在关闭应用程序后,如果用户单击通知,那么ChildActivity就会启动。我不想这样。如果ChildActivity没有运行或暂停,那么应该启动ParentActivity。
我怎样才能做到这一点?请帮帮忙。
发布于 2016-12-06 19:51:42
让您的Notification启动一个简单的调度Activity。此Activity在onCreate()中执行以下操作
super.onCreate(...);
if (ChildActivity.running) {
// ChildActivity is running, so redirect to it
Intent childIntent = new Intent(this, ChildActivity.class);
// Add necessary flags, maybe FLAG_ACTIVITY_CLEAR_TOP, it depends what the rest of your app looks like
childIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(childIntent);
} else {
// Child is not running, so redirect to parent
Intent parentIntent = new Intent(this, ParentIntent.class);
// Add necessary flags, maybe FLAG_ACTIVITY_CLEAR_TOP, it depends what the rest of your app looks like
parentIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(parentIntent);
}
finish();在ChildActivity中这样做:
public static boolean running; // Set when this Activity is active在ChildActivity.onCreate()中添加以下内容:
running = true;在ChildActivity.onDestroy()中添加以下内容:
running = false;发布于 2016-12-06 13:34:37
虽然有几种方法可以实现这一点,但下面是我能想到的方法。
首先,您应该通过这个链接获得ChildActivity是否活动。
Check whether activity is active
将其存储在某个变量childActive中,然后可以初始化不同的notificationIntents,无需使用任务TaskStackBuilder检查值。
例如;
Intent notificationIntent = null;
if(childActive)
notificationIntent = new Intent(context, ChildActivity.class);
else
notificationIntent = new Intent(context, ParentActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(context,
0, notificationIntent,
PendingIntent.FLAG_CANCEL_CURRENT);https://stackoverflow.com/questions/40996326
复制相似问题