Уведомление Android перезапускает приложение, но хочет возобновить - PullRequest
16 голосов
/ 09 апреля 2011

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

 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's 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);

Ответы [ 6 ]

25 голосов
/ 11 апреля 2011

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

android:launchMode="singleInstance"

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

9 голосов
/ 10 октября 2011

Если вы не хотите устанавливать для своей активности значение «singleInstance», установите намерение уведомления следующим образом:

4 голосов
/ 09 апреля 2011

Вы можете попробовать это 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);
0 голосов
/ 18 мая 2019

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

android:noHistory="true"

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

0 голосов
/ 15 января 2019

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

    //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
0 голосов
/ 22 февраля 2017

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

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

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