Уведомление Android открывает последнее действие вместо правильного действия

У меня есть небольшая проблема, и, посмотрев во многих местах, я не могу найти ответ.

У меня есть сервис, этот сервис проверяет наличие уведомлений на сайте и оповещает пользователя о новом уведомлении. Когда пользователь щелкает это уведомление, оно должно привести его к действию (я назову это 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 теперь все работает. Спасибо за все ответы.


person edkek    schedule 22.06.2013    source источник
comment
Это то, что он должен делать. Это все равно, что снова щелкнуть значок приложения в панели запуска. Отметьте свою активность android:clearTaskOnLaunch="true" в манифесте, если вы хотите, чтобы эта активность отображалась всегда.   -  person S.D.    schedule 22.06.2013
comment
Добавить это в CommentActivity? Я пробовал, и это все еще не решило проблему.   -  person edkek    schedule 22.06.2013
comment
+1 вот лучшее решение stackoverflow.com/questions/31448840/   -  person nAkhmedov    schedule 22.07.2015


Ответы (1)


Вы можете добавить флаг Intent.FLAG_ACTIVITY_REORDER_TO_FRONT к своему намерению. . Это гарантирует, что CommentActivity является возобновленной и активной активностью при обработке намерения.

person ianhanniballake    schedule 22.06.2013
comment
После добавления флага проблема все равно не решается. Я обновил задачу новым кодом с добавленным флагом. - person edkek; 22.06.2013