Android推送通知,在应用内部点击时不执行任何操作

时间:2016-04-27 13:48:28

标签: android notifications push-notification android-5.0-lollipop android-5.1.1-lollipop

我在点击推送通知时尝试启动活动。 有趣的是,当应用程序关闭,后台没有任何活动,并且我接受推送时,我点击它并打开所需的活动。 但是当应用程序的任何活动打开,并且我接受推送时,点击它不会做任何事情。 我尝试过差异组合。同时在发布活动中输入exported = true。

这是我的代码:

private static void showNotification(Context context,String title,String text,Intent openIntent)
{


    PendingIntent pi = PendingIntent.getActivity(context, 0, openIntent, PendingIntent.FLAG_CANCEL_CURRENT|PendingIntent.FLAG_ONE_SHOT);

   // Resources r = getResources();
   final Notification notification = new NotificationCompat.Builder(context)
            .setTicker(title)

            .setSmallIcon(R.drawable.notif_icon)
           .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),
                   R.drawable.notif_icon))
            .setContentTitle(title)
            .setContentText(text)
            .setContentIntent(pi)
            .setDefaults(Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS|Notification.DEFAULT_VIBRATE)
            .setAutoCancel(false)
            .build();

    // also tried .setAutoCancel(true) above instead of cancel
    notification.flags |= Notification.FLAG_AUTO_CANCEL;


   new Handler().postDelayed(new Runnable() {
       @Override
       public void run() {
           notificationManager.notify(0, notification);
       }
   },1000);


}

现在,我应该尝试什么组合?删除标志CANCEL_CURRENT或FLAG_ONE_SHOT?已经尝试过。即使没有这两个标志,也没有点击通知的结果。

我在Android 5.1 / 5.0上运行应用程序。我已经读过这些Android版本的通知存在问题。所以我已经尝试过像android:exported = true和FLAG_CANCEL current这样的解决方案。但没有效果。

现在如何让通知点击工作并打开预期的活动?

感谢任何帮助。 感谢

3 个答案:

答案 0 :(得分:0)

像这样使用FLAG_UPDATE_CURRENT。它为我工作

PendingIntent.getActivity(context, 0, openIntent, PendingIntent.FLAG_UPDATE_CURRENT);

答案 1 :(得分:0)

您需要广播FirebaseMessageingService类中的数据

public void onMessageReceived(RemoteMessage remoteMessage)

并在您想要显示数据的任何地方接收广播。

答案 2 :(得分:-1)

/*I tried this code on asus zenfone 2 (android 5.0), it is working without any problem please try this.*/
 private void pushNotificationWithClickAction(String mainTittle,String subTittle,Intent intent){
       PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
       Notification noti = new NotificationCompat.Builder(this)
                .setContentTitle(mainTittle)
                .setContentText(subTittle)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentIntent(pIntent).build();
        noti.flags |= Notification.FLAG_AUTO_CANCEL;
        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
        notificationManager.notify(0, noti);
    }