0

업데이트 : 이클립스 나 코드가 이러한 문제를 일으키지 않았습니다. Genymotion 않았다.Java/Android : BroadcastReceiver에서 Activity로 Intent 엑스트라를 전달

어쩌면 다른 사람이이 문제가있는 것 같아서 내 접근 방식이 완전히 잘못되었습니다. 그렇다면이 문제를 해결하기 위해 다른 방법을 시도해 볼 수 있습니다. 다음 설정이 있습니다.

BroadcastReceiver는 Apps 설치를 수신 대기 중입니다. 새로운 응용 프로그램이 설치 될 때마다, 나는 PendingIntent가 생성되기 전에

PendingIntent pIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

를 통해 정상적인 의도를 기반으로하는 PendingIntent를 사용하여 알림을 생성, 내가 전달되어야한다 정상적인 의도에 약간의 엑스트라를 넣어 통지가 클릭되었을 때 트리거되는 활동

notificationIntent.putExtra("AppLabel", appLabel); // the installed App 
notificationIntent.putStringArrayListExtra("Group", group); // the corresponding group 
notificationIntent.putStringArrayListExtra("List", list); // the corresponding list 

이제 제대로 작동하며 알림이 표시됩니다. 디버깅 pIntent가 생성되면 모든 엑스트라가 올바르게 설정되고 전달된다는 것을 알 수 있습니다. 그러나 열린 활동에서 추가 정보를 읽으려고하면 문제가 시작됩니다.

Bundle bundle = getIntent().getExtras(); 
for (String key : bundle.keySet()) { 
    Object value = bundle.get(key); 
    if (key.equals("Group")) { 
    group = (ArrayList<String>) value; 
    } ... } 

이 또한 시간을 일하지만, 지금은 완전히 손실 오전 : 난 이미 엑스트라를 읽고, 여기 답변에 따라 해결 방법을 구축했다. 일부 Reason의 경우 ArrayList가 비어 있습니다 [] - appLabel이 올바르게 설정되어 있습니다.

이제 실제 문제는 코드와 관련된 것이거나 일식 문제인지 확실하지 않습니다.

일부 배포 후에 bundle.keySet()이 putExtra 호출에서 설정 한 다른 키를 반환한다는 것을 확인했습니다. 또한 검색 할 때 종종 OutOfSync 오류가 발생합니다. 새로 고침은 키의 이름과 관련하여 도움이되지만 값은 여전히 ​​손실됩니다.

이것을 읽은 사람에게 : 많은 감사합니다! 지금 - 누군가에게 단서가 있습니까? 여기서 무슨 일이 일어나고 있습니까? 누구든지 비슷한 일식 문제를 알고 있습니까? 아니면 코드에 오류가 있습니까? 다른 디자인의 제안도 환영합니다. 매니페스트 정보를 정기적으로 : 시작된 알림 활동은 다음과 같이 정의한다 :

<activity 
android:theme="@style/Theme.AppCompat.CompactMenu.Dialog" 
android:label="Notification Receiver" 
android:excludeFromRecents="true"> 
</activity> 

MainActivity 그러나 단지가 내가 미리 ... 감사를 일부 오류 원인을 제거 할 수 있다면 나는

이 업데이트, 다행 것 이름과 라벨. 게다가 :

<uses-sdk 
android:minSdkVersion="18" 
android:targetSdkVersion="19" /> 

난 그냥 두 지점에서 SystemOut을 추가 : 의도가 BCR, 하나를 만들 때 하나 그것은 활동에 의해 읽을 때. 그것은 몇 가지 잘못된 이전 데이터를 저장 이클립스 것 같다, 그래서 모든 프로젝트의 모든 작업 영역, X, Y, Z의 검색

BroadcastReceiver.getExtras.keyset returns [a,b,c,d] 

Activity.getExtras.keyset returns the keys [x,y,z] 

는 ... 그들은 전에 어떤 일의 이전 버전에서 사용 된데도 찾을 수 없습니다?

+0

활동의 실행 모드가 매니페스트 또는 의도 플래그에 singleTop 또는 singleTask로 설정되어 있습니까? 알림 활동은 다음과 같이 정의된다 @matiash – matiash

+0

: <활동 안드로이드 : 테마 = "@ 스타일/Theme.AppCompat.CompactMenu.Dialog" 안드로이드 : 라벨 = "알림 수신기" 안드로이드 : excludeFromRecents = "진정한"> – D4ngle

+0

죄송합니다. onNewIntent()를 구현하는 것을 잊어 버리기 때문에 singleTop 활동에 흔히있는 실수입니다. 그러나 그것이 사실이 아닌 것처럼 보입니다. – matiash

답변

0

글쎄, 모든 기술적 인 것 같고 모든 outOfSync는 불쾌했지만 결국에는 관련이 없습니다. 그것은 단지 아주 사소한 실수를 덮었습니다.답변은 여기에서 찾으실 수 있습니다 : Incorrect extras received with all intents but the first one 적어도 현재 구현에서는 문제를 해결하는 것처럼 보입니다 - 물론 동기화 문제는 제외하고 다시 발생하지는 않습니다.

관련 문제