点击锁定屏幕上的通知首先打开错误的活动

时间:2017-02-03 18:19:47

标签: android android-notifications android-pendingintent taskstackbuilder

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

当用户点击通知时,它会首先打开ChildActivity,在Backback上,它会关闭子活动并打开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)(在未锁定的屏幕中发生)

先谢谢。

0 个答案:

没有答案