У меня есть небольшая проблема, и, посмотрев во многих местах, я не могу найти ответ.
У меня есть сервис, этот сервис проверяет наличие уведомлений на сайте и оповещает пользователя о новом уведомлении. Когда пользователь щелкает это уведомление, оно должно привести его к действию (я назову это CommentActivity).
Однако, если я нажму на уведомление внутри приложения, ничего не произойдет. Если я нажму на уведомление вне приложения, оно откроет последнее действие, показанное перед закрытием приложения.
Вот мой код для отображения уведомления:
Notice n; //Notification from site
....
Intent nIntent = new Intent(Intent.ACTION_MAIN);
nIntent.setClass(getApplicationContext(), CommentActivity.class);
nIntent.putExtra("activity_id", n.getFeedID());
nIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, nIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(FlankNotificationService.this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(n.getTitle())
.setContentText(n.getText())
.setContentInfo(arg0.getNotificationAmount() + " notification" + (arg0.getNotificationAmount() == 1 ? "." : "s."))
.setContentIntent(pIntent);
Notification mm = mBuilder.getNotification();
mm.flags = Notification.FLAG_ONLY_ALERT_ONCE | Notification.FLAG_AUTO_CANCEL;
mm.tickerText = n.getText();
....
mNM.notify(1558, mm);
Таким образом, вместо того, чтобы открывать CommentActivity, он либо возобновит работу приложения (если приложение не открыто), либо ничего не сделает (если приложение открыто).
Спасибо.
Редактировать 1:
В Intent добавлен флаг Intent.FLAG_ACTIVITY_REORDER_TO_FRONT. Все равно не решает проблему.
Редактировать 2:
Я нашел причину своей проблемы (которая была довольно глупой причиной). Когда CommentActivity запускается, если ему не передаются какие-либо данные ни из saveInstance, ни из Intent.getExtra, он просто закрывается. Причина, по которой я сначала не подумал об этом, заключалась в том, что он даже не показывал переход. После исправления проблемы с Intent.getExtra теперь все работает. Спасибо за все ответы.
android:clearTaskOnLaunch="true"
в манифесте, если вы хотите, чтобы эта активность отображалась всегда. - person S.D.   schedule 22.06.2013