5

Я хочу открыть мероприятие, когда я нажимаю на уведомление из строки состояния. Я видел, что это ответ на StackOverflow, но ни один из этих ответов не работает для меня. Эта проблема видна только на устройствах Lollipop, и лучший способ воспроизвести: 1. Запустите приложение. 2. Задняя панель приложения. 3. Получите push-уведомление. 4. Нажмите уведомление и попробуйте ввести 3-4 push-уведомления.Android нажимает на уведомление, не открывает прилагаемую активность

Ниже мой код: Я также попытался следующие:

  1. добавления Intent.ACTION_MAIN
  2. Intent.CATEGORY_LAUNCHER намерению
  3. PendingIntent.FLAG_UPDATE_CURRENT.
  4. андроид: экспортироваться = "истина" в моем AndroidManifest.xml

, но ничего не работает. Я вижу эту проблему только на устройствах Lollipop. Обратите внимание, что я вижу эту проблему с перерывами. Это что-то связано с намерением получить кеширование и не получать. Пожалуйста помоги.

PendingIntent pendingIntent = getPendingIntent(context, payload); 
Builder notificationBuilder = new NotificationCompat.Builder(context) 
      .setSmallIcon(R.drawable.ic_stat) 
      .setContentTitle(res.getString(R.string.app_name)) 
      .setContentText(payload.getMessage()) 
      .setTicker(payload.getMessage()) 
      .setContentIntent(pendingIntent) 
      .setSound(soundUri); 

private PendingIntent getPendingIntent(Context context, NotificationPayload payload) { 
    int requestID = (int) System.currentTimeMillis(); 
    Intent intent = new Intent(context, DeepLinkActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    intent.setPackage(BuildConfig.APPLICATION_ID); 
    intent.putExtra(NotificationHelper.KEY_NOTIFICATION_PAYLOAD, payload); 
    return PendingIntent.getActivity(context, requestID, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT); 
} 
+0

Настроена отложенный запрос к вашему строителю уведомлений? – k0sh

+0

У меня такая же проблема .. не повезло до сих пор –

ответ

0

Вы установили ожидающее намерение в методе уведомления setContentIntent?

Попробуйте, это работает для меня на всех версиях API

 Intent intent = new Intent(this, TestActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT); 

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
       .setSmallIcon(R.drawable.logo) 
       .setContentTitle(getResources().getString(R.string.notification_title)) 
       .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build()); 
+0

Да, у меня есть. Я добавил свой код выше. – user3773337

+0

Хорошо, я тестировал на kitkat, и он отлично работает. Я вижу этот вопрос ТОЛЬКО на устройствах с леденец. @androholic это работает для вас на леденец? – user3773337

+0

Я отредактировал свой ответ, чтобы включить код, который я только что проверил на леденец, и он отлично работает. Также удалите requestId. значение 0 вместо requestId в ожидающем намерении само по себе должно быть достаточным. Попробуйте приведенный выше код. – androholic

2

попробуйте добавить Intent.FLAG_ACTIVITY_CLEAR_TASK флаг в намерениях

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 

это кажется решить мою проблему