[안드로이드 공부]/서비스

포그라운드 서비스 타입 지정 - targetSDK 34

코코모모 2025. 2. 23. 14:40

아래는 코모스튜디오가 직접 만든 무료 앱이에요
(한 번만 봐주세요 ^^)

01

02

03

정각알림 만들기(말하는시계)

말하는 시계 (취침, 자전거) 

말하는 타이머 음성 스톱워치 

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. 추가로 할일

- 플레이 스토어 콘솔 에서 앱 업데이트 할 때 이에 대한 설명 추가

모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다.
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요.