2014-05-12 57 views
0

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

您设置'launchIntent.setAction(myAction);'但您的'myAction = null'。什么是myAction值?为什么你要手动设置? –

+0

myAction以编程方式设置,我使用它将信息传递给意图。在调用PendingIntent.getActivity()之前,我已经验证了该操作不是null,而是设置值。 – user1118764

+0

另外,S3看起来并没有得到我在意图中的演员。注2收到罚款。 – user1118764

回答

2

OK,原来我需要设置我的意图的标志,以“Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGL E_TOP“让它工作。

1

有一些设备上的问题时,在PendingIntentrequestCode不是> 0。甚至有一些设备在requestCode需求为> 1000

更改此:

PendingIntent.getActivity(context, -1, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

到这样的:

PendingIntent.getActivity(context, 1001, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

试过这个,甚至尝试了10000的值,但仍然遇到同样的问题。 – user1118764

+0

请解释你是如何知道它不工作。请张贴您的清单。 –

+0

我知道这是行不通的,因为在MainActivity的onResume()中,当我getIntent()并获取操作时,意图是“android.intent.action.MAIN”,操作为空。 – user1118764