我在点击推送通知时尝试启动活动。 有趣的是,当应用程序关闭,后台没有任何活动,并且我接受推送时,我点击它并打开所需的活动。 但是当应用程序的任何活动打开,并且我接受推送时,点击它不会做任何事情。 我尝试过差异组合。同时在发布活动中输入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这样的解决方案。但没有效果。
现在如何让通知点击工作并打开预期的活动?
感谢任何帮助。 感谢
答案 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);
}