Подтвердить что ты не робот

Android Notification перезапускает приложение, но хочет возобновить его.

Привет, у меня есть возможность получить уведомление, отображаемое для моей активности, и когда пользователь   нажимает уведомление, которое приложение перезапускает. Однако я просто хочу, чтобы он снова не перезапускался. например. это веб-приложение, и я хочу, чтобы он вышел на передний план, когда пользователь выбирает уведомление... но не обновляет веб-страницу. Могу ли я поймать это намерение или я посылаю неправильное намерение? Обычно, если я нажимаю кнопку "домой" и нажимаю значок приложения, приложение выходит на передний план и не обновляет/перезапускает. Так что это поведение, которое я хочу. Любые идеи?

 String ns = Context.NOTIFICATION_SERVICE;
 NotificationManager mNotificationManager = (NotificationManager)
                                             getSystemService(ns);
 //2.Instantiate the Notification
 int icon = R.drawable.notification_icon;
 CharSequence tickerText = "My App";  // temp msg on status line 
 long when = System.currentTimeMillis();
 Notification notification = new Notification(icon, tickerText, when);
 notification.flags |= Notification.FLAG_ONGOING_EVENT;
 //3.Define the Notification expanded message and Intent: 
 Context context = getApplicationContext();
 CharSequence contentTitle = "Notification";
 CharSequence contentText = "My app!"; // message to user
 Intent notificationIntent = new Intent(this, HelloAndroid2.class);
 PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
                                                          notificationIntent, 0);
 notification.setLatestEventInfo(context, contentTitle, contentText,
                                                          contentIntent);
 //4.Pass the Notification to the NotificationManager:  
 final int NOTIFICATION_ICON_ID = 1;
 mNotificationManager.notify(NOTIFICATION_ICON_ID, notification);
4b9b3361

Ответ 1

Я положил это в манифест

android:launchMode="singleInstance"

Это исправило проблему для меня. Также этот ответ, который я не пробовал, который ссылается на другие интересные вещи.

Ответ 2

Если вам нужно не устанавливать свою активность на "singleInstance", тогда установите намерение уведомления следующим образом:

notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

Ответ 3

Вы можете попробовать этот FLAG_ACTIVITY_REORDER_TO_FRONT (документ описывает именно то, что вы хотите)

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_REORDER_TO_FRONT

Intent notificationIntent = new Intent(this, HelloAndroid2.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

Ответ 4

Я бы рекомендовал установить флаг Intent.FLAG_ACTIVITY_SINGLE_TOP для этой конкретной ситуации, если вы используете android: launchMode = "singleInstance", это повлияет на поведение, когда вы вызываете другие намерения в своем приложении, например, используя facebook sdk, paypal sdk и т.д...

Объяснение просто здесь: ссылка

Ответ 5

У меня есть другое решение для меня здесь:

    //Resume or restart the app (same as the launcher click)
    val resultIntent = Intent(context, MyLauncherActivity::class.java)
    resultIntent.addCategory(Intent.CATEGORY_LAUNCHER)
    resultIntent.setAction(Intent.ACTION_MAIN)
    resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    val pendingIntent = PendingIntent.getActivity(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT)
    builder.setContentIntent(pendingIntent)  //builder is the notificationBuilder

Ответ 6

Удалите это из манифеста из части действия .MainActivity, если она у вас есть:

android:noHistory="true"

Это фатально из-за невозможности возобновить приложение на устройствах Samsung (и других устройствах) с более новой версией Android, чем 7