为通知的未决意图设置不同的活动
Set different activities for pending intent of notification
我目前面临为两个不同的活动设置挂起操作以通知的问题。
我有一个 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 在通知点击时启动。
正如法鲁克回答的那样,我不想要这个。通过检查 ChildActivity 的当前状态来创建通知的待定意图将不起作用。
假设在 ChildActivity 为 运行 时创建通知,但在创建通知后,用户终止了该应用程序。因此,在终止应用程序后,如果用户单击通知,则 ChildActivity 将启动。我不想要那个。我想如果 ChildActivity 不是 运行 或暂停,那么应该启动 ParentActivity。
我怎样才能做到这一点?
请帮忙。
虽然可能有多种方法可以实现这一点,但以下是我能想到的一种。
首先,你应该通过这个link
得到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);
让您的 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;
我目前面临为两个不同的活动设置挂起操作以通知的问题。
我有一个 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 在通知点击时启动。
正如法鲁克回答的那样,我不想要这个。通过检查 ChildActivity 的当前状态来创建通知的待定意图将不起作用。 假设在 ChildActivity 为 运行 时创建通知,但在创建通知后,用户终止了该应用程序。因此,在终止应用程序后,如果用户单击通知,则 ChildActivity 将启动。我不想要那个。我想如果 ChildActivity 不是 运行 或暂停,那么应该启动 ParentActivity。
我怎样才能做到这一点? 请帮忙。
虽然可能有多种方法可以实现这一点,但以下是我能想到的一种。
首先,你应该通过这个link
得到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);
让您的 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;