当我点击通知时,请应用以下内容:
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个活动开放,新的“主要”和前“新闻”。
如何通过点击通知关闭我的应用程序的任何活动?
答案 0 :(得分:6)
您可以在通知中设置PendingIntent,该内容将由broadcastReceiver中的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);
然后在使用Notification.Builder构建通知时,使用setContentIntent(pIntent)
将其添加到您的通知中。
答案 1 :(得分:0)
我使用了一个带有静态标志exitApp的单例,它在应用程序启动时为false,并且在从通知返回的活动中设置为true。
在所有活动的onResume()中检查此标志,如果为真,则活动将其称为finish()方法..
这样,即使通知被激活了一些活动,也会调用父活动的每个活动结束()和onResume(),反过来也会完成()直到mainActivity结束()和申请被终止。