android java активность сброса уведомлений - PullRequest
0 голосов
/ 21 января 2020

я использую этот код для уведомления

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(), "notify_001");
 Intent intent = new Intent(getApplicationContext(), MainActivity.class);
 PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, 
 intent,PendingIntent.FLAG_UPDATE_CURRENT);
 mBuilder.setContentIntent(pendingIntent); 

, когда я нажимаю на приложение уведомлений, открываю и перезагружаю MainActivity. Я не хочу перезапускать MainActivity.

Ответы [ 2 ]

1 голос
/ 21 января 2020

Если вы хотите просто вывести свое приложение на передний план (если оно запущено) или запустить его (если оно не запущено), вы должны использовать следующий подход:

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext(),
        "notify_001");
Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName());
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, 
intent,PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent); 

Это имитирует щелчок на значке приложения на экране HOME.

1 голос
/ 21 января 2020

Если возможно, попробуйте добавить режимы запуска к основному действию.

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

android:launchMode="singleTask"

пример кода

<activity
  android:name=".MainActivity"
  android:label="singleTask"
  android:launchMode="singleTask"
  android:taskAffinity="">

это должно сделать новый запуск для передачи данных к существующему действию, если оно открыто и находится в заднем стеке.

Также убедитесь, что вы переопределили приведенный ниже метод для получения новых данных в основном действии

protected void onNewIntent (Intent intent){
  //your update code goes here
}
...