1

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

知道为什么这不起作用吗?

4

0 回答 0