如何通过单击通知关闭我的应用程序的任何活动?

eph*_*amd 2 notifications android android-notifications android-notification-bar android-activity

当我点击通知时,请应用以下内容:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在应用程序的所有"startActivity"中,我应用了下一个标志:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
Run Code Online (Sandbox Code Playgroud)

startActivity我的通知执行以下操作:调用活动"Splash"并称为"Main".

Casulidad如果我在"主"脉冲通知中,关闭电流(正常工作).但是,如果我在活动"新闻"并且通知脉冲,我有2个活动开放,新的"主要"和前"新闻".

如何通过单击通知关闭我的应用程序的任何活动?

Woo*_*333 6

您可以在通知中设置PendingIntent,该PendingIntent将由broadcastReceiver中的Activity捕获.然后在活动的broadcastReceiver中,调用finish(); This应该关闭你的活动.

即把它放在你的活动中

BroadcastReceiver mReceiver = new BroadcastReceiver() {

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

};
Run Code Online (Sandbox Code Playgroud)

这在你的 onCreate()

IntentFilter filter = new IntentFilter("android.intent.CLOSE_ACTIVITY");
registerReceiver(mReceiver, filter);
Run Code Online (Sandbox Code Playgroud)

然后,您的通知中的PendingIntent应该"android.intent.CLOSE_ACTIVITY"为您的活动包提供一揽子安全措施.

这是通过

Intent intent = new Intent("android.intent.CLOSE_ACTIVITY");
PendingIntent pIntent = PendingIntent.getBroadcast(context, 0 , intent, 0);
Run Code Online (Sandbox Code Playgroud)

然后使用setContentIntent(pIntent)Notification.Builder构建通知时将其添加到您的通知中.