Деятельность не начинается с уведомления - PullRequest
0 голосов
/ 13 ноября 2018

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

Деятельность, которую я пытаюсь запустить с помощью уведомления, - это DetailActivity.

Вот так я настроил иерархию действий вмой manifest.xml

    <activity
        android:name=".SplashscreenActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".HomeActivity"
        android:parentActivityName=".SplashscreenActivity"/>
    <activity
        android:name=".DetailActivity"
        android:parentActivityName=".HomeActivity"/>

В моем методе onMessageReceived класса FirebaseMessagingService у меня есть следующее:

        Intent resultIntent = new Intent(this, DetailActivity.class);
        // Create the TaskStackBuilder and add the intent, which inflates the back stack
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addNextIntentWithParentStack(resultIntent);
        // Get the PendingIntent containing the entire back stack
        PendingIntent intent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
        mNotificationManager.notify(
                NOTIFICATION_ID,
                getNotification("title", "text", intent)
        );

Метод getNotification:

private Notification getNotification(String title, String text, PendingIntent intent) {

    return new NotificationCompat.Builder(this, CHANNEL_ID)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle(title)
            .setContentText(text)
            .setContentIntent(intent)
            .setOngoing(true)
            .build();
}

Я не знаю, заключается ли эта проблема в том, что действие, которое я пытаюсь запустить, не является прямым потомком действия средства запуска.И я не уверен, как отладить это тоже.Надеюсь, что кто-то сталкивался с этой странной проблемой раньше!

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018
 Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);

        Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this,"x")
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentTitle("your title")
                .setAutoCancel(true)
                .setSound(soundUri)
                .setContentIntent(pendingIntent)
                .setPriority(Notification.PRIORITY_HIGH);

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

        notificationManager.notify(0, notificationBuilder.build());

код уведомления

0 голосов
/ 13 ноября 2018

используйте это:

Intent notificationIntent = new Intent(this, DetailActivity.class);

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent. FLAG_ONE_SHOT);

и используйте это отложенное намерение в уведомлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...