아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
1. 현상 : 다음과 같은 exception 발생
java.lang.SecurityException:
One of RECEIVER_EXPORTED or RECEIVER_NOT_EXPORTED should be specified
when a receiver isn't being registered exclusively for system broadcasts
2. 원인
Android 14 (API 레벨 34) 이상을 타겟팅하는 앱에서는 이 권한과 타입 지정이 필수로 요구되며,
누락 시 SecurityException이 발생하여 앱이 크래시됩니다.
이 타입은 실제로 미디어를 재생하는 경우에만 사용해야 하며, 다른 용도로 사용하는 경우 앱이 거부될 수 있습니다.
3. 해결 - 수정 코드
권한 선언
<manifest ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<application ...>
...
</application>
</manifest>
서비스를 시작할 때 포그라운드 서비스 타입 지정
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
startForeground(1, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PLAYBACK)
} else {
startForeground(1, notification)
}
4. 추가로 할일
- 플레이 스토어 콘솔 에서 앱 업데이트 할 때 이에 대한 설명 추가
' [안드로이드 공부] > 서비스' 카테고리의 다른 글
ReceiverCallNotAllowedException: BroadcastReceiver components are not allowed to bind to services (0) | 2016.02.01 |
---|---|
android.content.ReceiverCallNotAllowedException (0) | 2016.01.07 |
안드로이드 서비스 3단계 과정 (0) | 2015.12.21 |
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |