通知意图在 up/back-navigation 关闭应用程序
Notification intent closes app on up/back-navigation
我的应用具有以下 activity 层次结构:
A -> B -> C
到目前为止,一切正常。现在我想添加一个通知。当用户点击它时,我想关闭 A 的所有子活动并启动 C 的实例,该实例以 A 作为父级,没有 B 作为中间 Activity:
A -> C
为了实现这一点,我使用了如图所示的 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>
Intent intent = new Intent(NotificationService.this, C.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addParentStack(B.class);
stackBuilder.addNextIntent(intent);
试试这个。我还没有测试过这个,但是 addParentStack(B.class)
应该在 AndroidManifest.xml
中添加为 B
声明的父级
好的,当我发现这个问题时,我正在使用 OxygenOS 和 OnePlus One。昨天,有一些更新,现在 没有任何改变。
如 Adeel Ahmad 所建议,它适用于 Intent
和 ParentStack
。也许这只是一个 OS 问题。总之,问题解决了。谢谢你的时间。
我的应用具有以下 activity 层次结构:
A -> B -> C
到目前为止,一切正常。现在我想添加一个通知。当用户点击它时,我想关闭 A 的所有子活动并启动 C 的实例,该实例以 A 作为父级,没有 B 作为中间 Activity:
A -> C
为了实现这一点,我使用了如图所示的 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>
Intent intent = new Intent(NotificationService.this, C.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(NotificationService.this);
stackBuilder.addParentStack(B.class);
stackBuilder.addNextIntent(intent);
试试这个。我还没有测试过这个,但是 addParentStack(B.class)
应该在 AndroidManifest.xml
B
声明的父级
好的,当我发现这个问题时,我正在使用 OxygenOS 和 OnePlus One。昨天,有一些更新,现在 没有任何改变。
如 Adeel Ahmad 所建议,它适用于 Intent
和 ParentStack
。也许这只是一个 OS 问题。总之,问题解决了。谢谢你的时间。