从推送通知打开应用程序时,我试图保留家庭活动的正常工作流程。我正在使用以下方法创建待处理的意图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();
知道为什么这不起作用吗?