업데이트 : 이클립스 나 코드가 이러한 문제를 일으키지 않았습니다. 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]
는 ... 그들은 전에 어떤 일의 이전 버전에서 사용 된데도 찾을 수 없습니다?
활동의 실행 모드가 매니페스트 또는 의도 플래그에 singleTop 또는 singleTask로 설정되어 있습니까? 알림 활동은 다음과 같이 정의된다 @matiash – matiash
: <활동 안드로이드 : 테마 = "@ 스타일/Theme.AppCompat.CompactMenu.Dialog" 안드로이드 : 라벨 = "알림 수신기" 안드로이드 : excludeFromRecents = "진정한"> – D4ngle
죄송합니다. onNewIntent()를 구현하는 것을 잊어 버리기 때문에 singleTop 활동에 흔히있는 실수입니다. 그러나 그것이 사실이 아닌 것처럼 보입니다. – matiash