2014-05-12 88 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