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 个活动打开,新的“主要”和以前的“新闻”。

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

4

2 回答 2

7

您可以在通知中设置一个 PendingIntent,该通知将被广播接收器中的 Activity 捕获。然后在活动的广播接收器中,调用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 构建通知时将其添加到您的通知中。

于 2013-10-08T08:58:45.853 回答
0

我使用了一个带有静态标志 exitApp 的单例,该标志在应用程序启动时为 false,并且在从通知返回的活动中设置为 true。

在所有活动的每个 onResume() 中都会检查此标志,如果为真,则活动调用它的 finish() 方法。

这样,即使通知被激活了一些活动,每个活动的finish()和父活动的onResume()也会被调用,这反过来也是finish(),直到mainActivity完成()并且应用程序被终止.

于 2015-08-07T11:46:07.933 回答