4

我在 android 中有一个应用程序,我想在某些情况下将活动带到前台。我为此使用 NotificationManager。这是我的代码。问题是,活动第一次成功地被带到了前面,但后来却没有。此外,此代码是从服务运行的。

Intent notificationIntent = new Intent(context, MainActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

            NotificationCompat.Builder mBuilder =
                        new NotificationCompat.Builder(this)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setContentIntent(contentIntent)
                        .setContentTitle("Bring me front!")
                        .setContentText("Bring me!!! BRING!!!")
                        .setFullScreenIntent(contentIntent, true);

            NotificationManager mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
            mNotificationManager.notify(0, mBuilder.build());
4

3 回答 3

5

NotificationManager 具有(未记录的)行为,如果您发布与已经处于活动状态的通知的 ID 匹配的新通知,它将忽略fullScreenIntent 字段。

于 2016-11-04T11:16:50.877 回答
3

我有一个类似的问题。就我而言,我错过了两件事:

  1. Manifest 中的 USE_FULL_SCREEN_INTENT 权限。
  2. 必须在手机设置中设置密码或图形。按下解锁按钮后,用户必须立即无法使用 UI。然后全屏活动显示。
于 2020-02-20T14:21:35.310 回答
2

有几件事要检查:

  1. 您的意图可能需要FLAG_ACTIVITY_NEW_TASK(并且可能FLAG_ACTIVITY_CLEAR_TOP)确保将活动带到最前面。
  2. 确保您没有尝试多次重复使用相同的 PendingIntent;每次发布此通知时,您都需要构造一个新的 PendingIntent 以用于fullScreenIntent.
于 2013-07-12T16:09:20.393 回答