Notification Click not launch the given Activity on Nexus Phones

后端 未结 9 879
一个人的身影
一个人的身影 2020-12-08 14:59

I am using this code to show the local notification and When notification comes then on click of notification want to launch the ListActivity but on Google nexus device

相关标签:
9条回答
  • 2020-12-08 15:39

    This is reported issue for kitkat 4.4 not opening activity when click on notification here is an issue url

    http://code.google.com/p/android/issues/detail?id=63236

    http://code.google.com/p/android/issues/detail?id=61850

    suggested workaround is to cancel existing PendingIntent, or use PendingIntent.FLAG_CANCEL_CURRENT

    OR

    Try below

    Adding a flag in Activity in AndroidManifiest.xml

    android:exported="true"
    
    0 讨论(0)
  • 2020-12-08 15:43

    Try to replace this

    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);   // To open only one activity on launch.
    PendingIntent pIntent = PendingIntent.getActivity(context, reqCode,
            notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    

    to

    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);   // To open only one activity on launch.
    PendingIntent pIntent = PendingIntent.getActivity(context, reqCode, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
    

    it will work for all version even with Kitkat also.

    Note : Activity will be started outside of the context of an existing activity, so you must use the Intent.FLAG_ACTIVITY_NEW_TASK launch flag in the Intent.

    0 讨论(0)
  • 2020-12-08 15:49

    If android:exported="true" doesn't work for you, just redirect the intent from your LAUNCHER activity.

    In your LAUNCHER activity check for incoming notifications as follows:

     if(getIntent().hasExtra("type") && getIntent().getStringExtra("type").compareTo("notification")==0){
            Intent redirect = new Intent(getIntent());
            redirect.setClass(this,YourNotificationActivity.class);
            startActivity(redirect);
     }
    

    If you need to filter the intent then use:

     Intent incoming = getIntent();
     if(intent.hasExtra("type") && intent.getStringExtra("type").compareTo("notification")==0){
        Intent outgoing = new Intent(this, YourNotificationActivity.class);
        outgoing.putExtra("title", incoming.getStringExtra("title");
        outgoing.putExtra("content", incoming.getStringExtra("content");
        startActivity(outgoing);
     }
    
    0 讨论(0)
  • 2020-12-08 15:52

    I hope it will help u.

    long uniqueId= System.currentTimeMillis();

        /** This is the part to let your application recognise difference notification when the user click on the notification.
         *  You could use any unique string to represent your notification. But be sure each notification have difference action name.
         **/
        taskDetailIntent.setAction("notifi" + uniqueId);
    
    
        PendingIntent contentIntent = PendingIntent.
                getActivity(this, 0, taskDetailIntent, PendingIntent.FLAG_ONE_SHOT);
    
        builder.setContentIntent(contentIntent);
    
        /** Set the unique id to let Notification Manager knows this is a another notification instead of same notification.
         *  If you use the same uniqueId for each notification, the Notification Manager will assume that is same notification
         *  and would replace the previous notification. **/
        notificationManager.notify((int) uniqueId, builder.build());
    
    0 讨论(0)
  • 2020-12-08 15:57

    You can also add PendingIntent.FLAG_ONE_SHOT to fix this.

    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,
                            PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
    
    0 讨论(0)
  • 2020-12-08 15:58

    My above code is working well for all OS version except Kitkat 4.4 and 4.4 + But i have got solution i, put the receiver in another process and it works well for all most Android OS versions...

    Like this way..

    activity android:name=".NotifyReciever" android:process=":remote"

    and we can learn more about processes here....

    Should I use android: process =":remote" in my receiver?

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