2

Когда я нажимаю на уведомления применяются следующие:Как закрыть любую активность моего приложения, нажав на уведомление?

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 

Во всех «startActivity» приложения я применил следующий флаг:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 

startActivity мое уведомление делает следующее: вызов деятельность «Splash» и называется «Main».

Casulidad Если я был в уведомлении о «главном» импульсе, замыкает ток (работает правильно). Но если я нахожусь в деятельности «Новости» и пульсирую уведомление, у меня есть 2 открытых мероприятия, новый «Главный» и бывший «Новости».

Как закрыть вид деятельности моего приложения, нажав на уведомление?

ответ

6

Вы можете установить PendingIntent в уведомлении, которое будет обнаружено в Activity в трансляторе. Затем в broadcastReceiver активности, звоните finish(); Это должно закрыть вашу деятельность.

т.е. Поместите это в вашей деятельности

BroadcastReceiver mReceiver = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     finish(); 
    } 

}; 

Это в вашем onCreate()

IntentFilter filter = new IntentFilter("android.intent.CLOSE_ACTIVITY"); 
registerReceiver(mReceiver, filter); 

И тогда ваш PendingIntent в уведомлении должно быть действие "android.intent.CLOSE_ACTIVITY" и безопасности упаковки пакета вашей деятельности в ,

Это делается

Intent intent = new Intent("android.intent.CLOSE_ACTIVITY"); 
PendingIntent pIntent = PendingIntent.getBroadcast(context, 0 , intent, 0); 

Затем добавьте его в уведомление с помощью setContentIntent(pIntent) при создании уведомления с Notification.Builder.

+0

Спасибо, но как добавить "android.intent.CLOSE_ACTIVITY" уведомление о намерении/ожидании? @ Woodi_333 – ephramd

+0

Отредактировано, чтобы указать, как создавать ожидающие намерения. –

+1

Моя деятельность (основная) требуется от BroadCastReceiver? – ephramd

0

Я использовал синглтон со статическим флагом exitApp, который был ложным в начале приложения, и в действии, которое возвращается из уведомления, установлено значение true.

Этот флаг проверяется в каждом из onResume() всех видов деятельности, и если это правда, активность называет это метод отделки() ..

Таким образом, даже если уведомление активируется некоторые несколько мероприятий вниз дорожка, каждая операция finish() и onResume() родительской активности вызывается, которая по очереди также заканчивает() до завершения mainActivity(), и приложение прекращается.

Смежные вопросы