通知意图关闭应用程序的向上/向后导航

时间:2015-08-18 07:36:39

标签: android android-intent android-activity android-notifications android-navigation

我的应用程序具有以下活动层次结构:

A - > B - > ç

到目前为止,一切运作良好。现在我想添加一个通知。当用户点击它时,我想关闭A的所有子活动并启动一个C的实例,其中A为父级,没有B作为中间活动:

A - > ç

为了达到这个目的,我使用了Androids TaskStackBuilder来显示here来构建通知。但是当用户按下后退按钮或使用顶部栏中的向上导航时,这会导致应用程序关闭(没有错误,检查 logcat )。我做错了什么?

...
Intent intent = new Intent(NotificationService.this, C.class);
Intent parentIntent = new Intent(NotificationService.this, A.class);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addNextIntent(parentIntent);
stackBuilder.addNextIntent(intent);

PendingIntent pendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.setContentIntent(pendingIntent);
...

我的AndroidManifest.xml如下所示:

<activity android:name=".activities.A"
          android:label="@string/app_name"
          android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

<activity android:name=".activities.B"
          android:parentActivityName=".activities.A"
          android:launchMode="singleTop">
</activity>

<activity android:name=".activities.C"
          android:parentActivityName=".activities.B">
</activity>

2 个答案:

答案 0 :(得分:0)

Intent intent = new Intent(NotificationService.this, C.class);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addParentStack(B.class);
stackBuilder.addNextIntent(intent);

试试这个。我已经对此进行了测试,但addParentStack(B.class)应该在B

中添加为AndroidManifest.xml声明的父级

答案 1 :(得分:0)

好的,当我发现这个问题时,我正在使用OxygenOS和OnePlus One。昨天,有一些更新,现在它无需更改任何内容

适用于IntentParentStack Adeel Ahmad 建议。也许这只是一个操作系统问题。无论如何,问题解决了。谢谢你的时间。