我正在开发一个应用程序,当有传入的事件时显示通知。当用户点击通知时,他们将被带到应用程序中具有特定片段的活动。在搭载Android 4.1.2的三星Galaxy Note 2上,这样可行。但是,在安装了Android 4.3的三星Galaxy S3上,活动没有收到正确的操作,而是收到了意图" android.intent.action.MAIN"。
此外,S3似乎没有得到我在意图中加入的额外内容。注2收到的很好。
通知代码如下:
Intent launchIntent;
String myType, myAction;
// myType and myAction are programmatically set
launchIntent = new Intent(context, MainActivity.class);
launchIntent.putExtra("Type", myType);
launchIntent.setAction(myAction);
PendingIntent pendingIntent = PendingIntent.getActivity(context, -1, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder noti = new NotificationCompat.Builder(
context).setContentTitle(context.getResources().getString(R.string.app_name))
setContentText(notificationMessage)
setSmallIcon(R.drawable.ic_stat_notify)
setContentIntent(pendingIntent)
setAutoCancel(true)
setWhen(System.currentTimeMillis())
setDefaults(Notification.DEFAULT_ALL);
notificationManager.notify(notifyId, noti.build());
有谁知道为什么它适用于1个设备而不是另一个设备?从4.1到4.3的意图是否有任何变化?
感谢。
答案 0 :(得分:2)
好的,事实证明我需要将我的意图标志设置为“Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP”才能生效。
答案 1 :(得分:1)
当requestCode
中的PendingIntent
不是>时,某些设备会出现问题。甚至有些设备requestCode
需要> 1000。
改变这个:
PendingIntent.getActivity(context, -1, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
到此:
PendingIntent.getActivity(context, 1001, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);