Невозможно открыть существующее, на котором выполняется действие, при нажатии на локальное уведомление - PullRequest
0 голосов
/ 22 января 2020

Я использую локальное уведомление для моего приложения. проблема: когда я нажимаю на уведомление, оно открывает приложение с самого начала. Но я хочу открыть приложение с того же экрана, где приложение вводится в фоновом режиме.

Решение, которое я уже пробовал:

Intent intent = new Intent(this, SplashScreen.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
        PendingIntent contentIntent = PendingIntent.getActivity(this, new Random().nextInt(), intent, 0);

Я пробовал много настроек флагов, но ни один из них не работает и PendingIntent.FLAG_ONE_SHOT также не работает.

Я пробовал по этой ссылке также Как открыть уже открытое действие вместо создания нового? , но это не работает для меня.

ПЛАТФОРМА: Android 9 (p ie), Минимальный API : 24.

Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 22 января 2020

То, что вы пытаетесь сделать, может быть достигнуто многими способами.

Опыт показывает, что самым простым решением этой проблемы является завершение начального действия до его отображения. Если ваша стартовая активность появляется только при запуске приложения, вы можете сделать:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (!isTaskRoot()) {
        finish();
        return;
    }

    setContentView(R.layout.activity_splash);
}

Если это не ваш случай, вы можете создать Намерение для "фантомной активности". Фантомное действие может закрыться, если приложение работает, или оно может перенаправить на начальное действие, если приложение не запущено.

0 голосов
/ 28 января 2020

Другим более сложным способом является использование глубоких ссылок, особенно рекомендуется, если вы будете перемещаться по приложению после того, как пользователь нажал на уведомление:

Вы также можете передавать информацию через приложение, используя трансляции:

0 голосов
/ 22 января 2020

Если вы хотите просто возобновить свое приложение без запуска, указав c активность, просто не указывайте PendingIntent. В этом случае, когда приложение будет закрыто, Android запустит ваше приложение с самого начала по клику пользователя. Но если ваше приложение все еще работает, оно будет возобновлено. Например, вы можете использовать следующее

 NotificationCompat.Builder mBuilder =
        new NotificationCompat.Builder(this)
        .setSmallIcon(R.drawable.notification_icon)
        .setContentTitle("My notification")
        .setContentText("Hello World!");


    // Gets an instance of the NotificationManager service//

    NotificationManager mNotificationManager =

        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    mNotificationManager.notify(1, mBuilder.build());
...