1

下面的函数显示一个待处理意图的通知。当屏幕解锁并收到通知时,下面的方法将创建一个通知。

当用户点击通知时,它会打开第一个 ChildActivity,在 backpress 时,它会关闭子 Activity 并打开 MainActivity->subActivity。在 backpress 上关闭 subActivity 并显示 MainActivity。

子活动将根据 MainActivity 的 Intent 动作启动

在解锁屏幕中,以下方法给出了上述结果,并且根据我的要求完美。

public void showNotification(Context context, String extraUri){

    final Intent mainActivityIntent = new Intent(context, MainActivity.class);

    mainActivityIntent.putExtra(MainActivity.INTENT_EXTRA_ACTIVE, 1232123);
    // this will help determine to start subactivity from mainActivity
    mainActivityIntent.setAction(MainActivity.MAIN_ACTIVITY_CHANGED);
    mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    final TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
    taskStackBuilder.addNextIntent(mainActivityIntent);

    final Intent intent = new Intent(context, ChildActivity.class);
    intent.putExtra(ChildActivity.EXTRA_URI, extraUri);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    taskStackBuilder.addNextIntent(intent);


    final PendingIntent pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_CANCEL_CURRENT);

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("Title")
            .setContentText("Message Body")
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

问题

当屏幕锁定并点击通知时,它会要求解锁屏幕,解锁时,它会启动应用程序。但

首先它显示 SubActivity,然后在后按时显示 ChildActivity,在 ChildActivity 后按时显示 MainActivity。

所以活动的顺序发生了变化。

正确的顺序是 MainActivity->SubActivity->ChildActivity (TopMost) (发生在解锁屏幕上)

提前致谢。

4

0 回答 0