从推送通知中打开应用程序时,我试图将常规工作流程保留到家庭活动中。我正在使用TastStackBuilder
创建待处理的意图:
Intent childActivityIntent = new Intent(context, ChildActivity.class);
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
taskStackBuilder.addNextIntentWithParentStack(childActivityIntent);
PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
int iconResource = getIconResource(icon);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "fcm_default_channel")
.setSmallIcon(iconResource)
.setContentTitle(messageTitle)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
这是清单:
<activity
android:name="com.example.ui.HomeActivity"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.ChildActivity"
android:theme="@style/whiteTheme"
android:screenOrientation="portrait"
android:parentActivityName=".ui.HomeActivity"/>
当我单击通知时,ChildActivity
会打开正确的活动,但是当我按返回时,HomeActivity
不会打开,应用程序只会关闭。
我已经尝试过重新安装应用程序,将PendingIntent
标志更改为FLAG_CANCEL_CURRENT
,但似乎无济于事。
但是,如果我在TaskStackBuilder
上开始活动,则工作流将正确应用:
Intent childActivityIntent = new Intent(context, ChildActivity.class);
TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
taskStackBuilder.addNextIntentWithParentStack(childActivityIntent);
taskStackBuilder.startActivities();
知道为什么这不起作用吗?