Intent to resume a previously paused activity (Called from a Notification)

后端 未结 5 1494
自闭症患者
自闭症患者 2020-12-25 15:05

I\'m developing an app which shows a notification to the user. The notification\'s objective is to make it easy to the user to return to the activity when the user is in ano

相关标签:
5条回答
  • 2020-12-25 15:12

    I found out how to do it. I added the following code:

    notifyIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    

    Now my code looks like this:

        notification = new Notification(R.drawable.icon,
                "Notify", System.currentTimeMillis());
        notification.setLatestEventInfo(this, "App name",
                "App message", PendingIntent.getActivity(this,
                        0, new Intent(this, Main.class)
                                .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
                                        | Intent.FLAG_ACTIVITY_SINGLE_TOP),
                        PendingIntent.FLAG_CANCEL_CURRENT));
        notification.flags |= Notification.FLAG_ONGOING_EVENT;
    
    0 讨论(0)
  • 2020-12-25 15:14

    When creating your PendingIntent, you use:

    Main.this.getBaseContext()

    You should use the default Activity context if you want to return to the same activity. Read more here:

    Android - what's the difference between the various methods to get a Context?

    0 讨论(0)
  • 2020-12-25 15:28

    I solved the same problem by setting

    android:launchMode="singleTask"
    
    0 讨论(0)
  • 2020-12-25 15:30

    This helps for me android:launchMode="singleInstance"

    <activity
            android:name="com.mosis.automatskidnevnik.MainActivity"
            android:launchMode="singleInstance"
            android:label="@string/app_name" >
            ...
    
    0 讨论(0)
  • 2020-12-25 15:31

    Apart from the correct answer of @Jimix I would change the PendingIntent requestCode from 0 to a non zero value as commented on another answer. On the other hand, there is a known bug on previous Android versions that took me a couple of desperate hours. The solution proposed there worked fine for me cancelling the PendingIntent before of sending the notification:

    if (Build.VERSION.SDK_INT == 19) {
       getNotificationPendingIntent().cancel();
    }
    
    0 讨论(0)
提交回复
热议问题