用户点击通知时未传递通知的意图/操作

时间:2014-05-12 07:19:14

标签: android android-intent notifications

我正在开发一个应用程序,当有传入的事件时显示通知。当用户点击通知时,他们将被带到应用程序中具有特定片段的活动。在搭载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的意图是否有任何变化?

感谢。

2 个答案:

答案 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);