내가 방송 매니페스트에 등록 된 수신기가 작동하지 않습니다. 왜?PACKAGE_ADDED 브로드 캐스트 리시버는
답변
다른 앱을 설치하기 전에이 broadcastReceiver가 포함 된 앱을 실행 했습니까?
일부 API 버전부터는 앱을 실행할 때까지는 BroadcastReceivers가 작동하지 않습니다. 활동을 시작하고 실행하십시오.
또한, 브로드 캐스트 리시버에 다음을 추가하는 것을 잊지 마세요 :
<data android:scheme="package" />
편집이 : 안드로이드 8에서 앱 목표 API 27 이상, 그것은 부분적으로 작동하는지, 그래서 당신은 매니 페스트가 아닌 코드로 이벤트에 등록해야합니다. 다음은 매니페스트에서 여전히 안전하게 사용할 수있는 인 텐트 목록입니다 : https://developer.android.com/guide/components/broadcast-exceptions.html.
나머지는 코드에서 사용해야합니다. 추가 정보 here
설치하려는 응용 프로그램에서 인 텐트를 받으려고합니까? The documentation for ACTION_PACKAGE_ADDED 메시지 :
새로 설치된 패키지는이 브로드 캐스트를 수신하지 않습니다.
또 다른 가능성은이 인 텐트가 매니페스트를 통해 등록 된 구성 요소에는 전달되지 않지만 수동으로 만 전달된다는 것입니다 (an answer by Mark Murphy to Stack Overflow question Can't receive broadcasts for PACKAGE intents에서 설명).
android.intent.action.PACKAGE_ADDED은 시스템 의도입니다 (설치시 자신의 앱이 수신하지 않음에 유의하십시오). BroadcastReceiver은 앱 외부 소스로부터 메시지를 수신합니다. 따라서, 당신은 넣어하지 않았다 확인 : 안드로이드 : 그래서
<data android:scheme="package" />
, 당신의 BroadcastReceiver 당신의 AndroidManifest.xml에 다음과 같아야합니다 :
또한 추가해야 = "false"를 수출
<application ...>
<receiver android:name=".NewAppReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
</appcication>
가 여전히 작동하지 않으면, 당신은 등의 높은 우선 순위를 넣어 시도 할 수 있습니다 : 안드로이드 : 우선 순위 = "1000" 0 당신이 일을해야 다른 패키지를 수신하려고하면 http://developer.android.com/guide/topics/manifest/receiver-element.html
문서에서 언급했듯이 최대 우선 순위는 999 일 수 있습니다. https://developer.android.com/guide/topics/manifest/intent-filter-element.html – Sagar
어떤 이유로 든 여전히 작동하지 않습니다. 내 의도 필터에 여러 가지 작업이 있습니다. 그 중에서도 PACKAGE_FULLY_REMOVED가 수신자의 onCreate를 제대로 트리거하지만 PACKAGE_ADDED는 단순히 수신하지 않습니다. 내 앱이 이미 실행 중 상태이고, 리시버에 대해 "true"를 내 보낸 경우 최대 우선 순위를 999로 설정하고 제안에 따라 를 포함 시켰습니다. 내가 여기서 뭔가를 놓치고 있니? – Sagar
: 은 한 번보세요.
(@Savvas에 명시된 바와 같이) 나만의 패키지 추가를 받으려고하면받을 수 없습니다.방송 수신자가 action.PACKAGE_ADDED
인 경우에도 수신자의 onReceive
방법은 isn't triggered입니다.
이 경우 가장 좋은 방법은이 데이터를 저장하는 것입니다. sharedPreferences
을 사용하여 "appIsWorkedBefore"와 같은 키를 추가하고 실행 프로그램의 onCreate 메소드에서이 변수를 "true"로 설정하십시오. 그리고이 불리언과 관련하여 작품을 만들 수 있습니다.
- 1. 브로드 캐스트 리시버는
- 2. Android 브로드 캐스트 리시버는 확장 애플리케이션으로 null 포인터 예외를 반환합니다.
- 3. 브로드 캐스트에 대한 Android 권한 PACKAGE_REMOVED/PACKAGE_ADDED
- 4. 브로드 캐스트 리시버 권한 브로드 캐스트 리시버의 안드로이드 문서에서
- 5. sendMultiPartTextMessage가있는 브로드 캐스트 수신기
- 6. 브로드 캐스트 리시버 android
- 7. 브로드 캐스트 서버 검색
- 8. socket.io로 브로드 캐스트 하시겠습니까?
- 9. 서비스 시작시 브로드 캐스트?
- 10. Cant가 브로드 캐스트 수신자
- 11. MPI로 개체 브로드 캐스트
- 12. 브로드 캐스트 리시버 이슈
- 13. 브로드 캐스트 수신기
- 14. 브로드 캐스트 수신
- 15. Android에서 브로드 캐스트 에뮬레이션
- 16. iPhone에서의 셀 브로드 캐스트
- 17. 브로드 캐스트 기밀 데이터
- 18. 브로드 캐스트 메시지를 보내고받습니다.
- 19. 브로드 캐스트 리시버
- 20. 무선 데이터 브로드 캐스트
- 21. 브로드 캐스트 리시버가
- 22. Windows에서 SNMP 브로드 캐스트
- 23. NFC 브로드 캐스트 문제
- 24. UDP 브로드 캐스트 듣기
- 25. Java에서의 UDP 브로드 캐스트
- 26. 바인딩 또는 브로드 캐스트?
- 27. 브로드 캐스트 주소가있는 UdpDiscoveryEndpoint
- 28. 브로드 캐스트 리시버,
- 29. 브로드 캐스트 액션 : ACTION_CAMERA_BUTTTON
- 30. 브로드 캐스트 리시버는 방송 알림을 수신 할 수 있도록 보장되어 있습니까?
감사합니다. intent-filter에 를 추가하면 작동합니다! – arts777
도움이 되니 기쁩니다. –
@android 개발자, 감사합니다하지만 DDMS보기에서 응용 프로그램을 제거하는 동안 PACKAGE_REMOVED 문제가 남아 있습니다. 어떤 제안이 있습니까 – ArK