2014-01-19 14 views
2

以下代碼在Jelly Bean上正常工作 - 通知打開TimerActivity。 但是,在KitKat中,此代碼改爲打開MainActivity。這是一個錯誤?通知僅在KitKat上打開錯誤的活動

mBuilder = new NotificationCompat.Builder(getApplicationContext()) 
    .setSmallIcon(ongoingNotificationIcon) 
    .setContentTitle(ongoingNotificationContentTitle) 
    .setContentText(ongoingNotificationContentText) 
    .setTicker(ongoingNotificationTicker) 
    .setPriority(99) 
    .setOngoing(true) 
    ; 

Intent resultIntent = new Intent(this, TimerActivity.class); 
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
stackBuilder.addParentStack(TimerActivity.class); 
stackBuilder.addNextIntent(resultIntent); 
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
mBuilder.setContentIntent(resultPendingIntent); 
timerNotification = mBuilder.build(); 
startForeground(NOTIFICATION_ID, timerNotification); 

回答

5

這同樣看起來這裏的問題:

http://code.google.com/p/android/issues/detail?id=61850

http://code.google.com/p/android/issues/detail?id=63236

建議的解決辦法是取消現有掛起的意圖,或者使用 PendingIntent.FLAG_CANCEL_CURRENT

+0

我不不明白這一點。說解決方案是調用'getNotificationPendingIntent()。cancel();'但它說getNotificationPendingIntent()是未定義的。我也不知道如何設置該標誌。正如你可以猜到的,我是一個初學者。 – TimSim

+0

如何設置標誌:http://developer.android.com/reference/android/support/v4/app/TaskStackBuilder.html#getPendingIntent%28int,%20int%29,正如您所看到的,TaskStackBuilder.getPendingIntent接受PendingIntent.FLAG_CANCEL_CURRENT爲一個標誌 – marcinj

+0

我不確定這是否是您遇到的確切問題,無論如何您都會開啓一些活動。據我所知,這在重新安裝時發生,一些未決的意圖必須被緩存。 – marcinj