How to close any activity of my application by clicking on a notification?

前端 未结 2 1720
谎友^
谎友^ 2021-01-14 22:00

When I click on a notification apply the following:

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


        
相关标签:
2条回答
  • 2021-01-14 22:46

    I used a singleton with a static flag exitApp that was false at start of the application and it is set to true in the activity that returns from the notification.

    This flag is checked in each of onResume() of all activities and if it is true the activity calls it's finish() method..

    This way, even if the notification is activated some few activities down the road, each activity finish() and the onResume() of the parent activity is called which in turns also finish() until the mainActivity finish() and the application is terminated.

    0 讨论(0)
  • 2021-01-14 23:02

    You could set a PendingIntent in the notification that would be caught by the Activity in a broadcastReceiver. Then in the broadcastReceiver of the activity, call finish(); This should close your activity.

    i.e. Put this in your activity

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

    This in your onCreate()

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

    And then your PendingIntent in your notification should have action of "android.intent.CLOSE_ACTIVITY" and for safety a package of your activity's package.

    This is done by

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

    Then add it to your notification by using the setContentIntent(pIntent) when building the notification with the Notification.Builder.

    0 讨论(0)
提交回复
热议问题