首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为通知的待定意图设置不同的活动

为通知的待定意图设置不同的活动
EN

Stack Overflow用户
提问于 2016-12-06 13:16:00
回答 2查看 2.1K关注 0票数 1

我目前面临的问题是为两种不同的活动设置待定的行动通知。

我有一个ParentActivity和一个ChildActivity。如果ChildActivity当前正在运行或暂停,我希望在通知时打开它,否则启动ParentActivity。

我试过这个:

代码语言:javascript
复制
 .........

    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。

我怎样才能做到这一点?请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-06 19:51:42

让您的Notification启动一个简单的调度Activity。此ActivityonCreate()中执行以下操作

代码语言:javascript
复制
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中这样做:

代码语言:javascript
复制
public static boolean running; // Set when this Activity is active

ChildActivity.onCreate()中添加以下内容:

代码语言:javascript
复制
running = true;

ChildActivity.onDestroy()中添加以下内容:

代码语言:javascript
复制
running = false;
票数 0
EN

Stack Overflow用户

发布于 2016-12-06 13:34:37

虽然有几种方法可以实现这一点,但下面是我能想到的方法。

首先,您应该通过这个链接获得ChildActivity是否活动。

Check whether activity is active

将其存储在某个变量childActive中,然后可以初始化不同的notificationIntents,无需使用任务TaskStackBuilder检查值。

例如;

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40996326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档