2014-01-19 2 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

관련 문제