안드로이드/SDK version

[Android] OS 14 USE_FULL_SCREEN_INTENT 권한 & ForegroundServiceType

코딩하는후운 2024. 6. 24. 16:50
반응형

Android 14 USE_FULL_SCREEN_INTENT 권한 대응 & startForegrounService ForegroundServiceType 대응

 

Android OS 14에서 전체 화면 알림이 통화, 알람 제공앱으로 한정 되었습니다.
안드로이드 14로 업데이트 하기전에 앱이 설치 되어있으면 이 권한은 활성화 상태로 유지 됨.

 

전체 화면 알림 권한


Android OS 14에서는 사용자가 전체 화면 알림을 임의로 끌 수 있다.

'USE_FULL_SCREEN_INTENT' 권한을 갖고있는지 여부는 NotimacationManager를 이용하여야 함.

NotificationManagerCompat.from(context).canUseFullScreenIntent()

나는 해당 화면의 알림 울리는 곳에서 권한 체크 후 꺼져 있을 경우
시스템 Alert을 이용하여 한번만 알림이 뜨도록 작업 하였다.


 

Android 14 ForegroundServiceType

Android 14 변경사항으로, foreground service 선언시 AndroidManifest에
android:foregroundServiceType 를 필수로 명시하도록 변경 되었습니다.

<service
    android:name="서비스명"
    android:enabled="true"
    android:foregroundServiceType="phoneCall"
    android:exported="false" />

나는 전화 관련 서비스여서 phoneCall을 넣어 주었습니다.

서비스 타입 종류 (각각 권한도 필요함)

  • camera: FOREGROUND_SERVICE_CAMERA
  • connectedDevice: FOREGROUND_SERVICE_CONNECTED_DEVICE
  • dataSync: FOREGROUND_SERVICE_DATA_SYNC
  • health: FOREGROUND_SERVICE_HEALTH
  • location: FOREGROUND_SERVICE_LOCATION
  • mediaPlayback: FOREGROUND_SERVICE_MEDIA_PLAYBACK
  • mediaProjection: FOREGROUND_SERVICE_MEDIA_PROJECTION
  • microphone: FOREGROUND_SERVICE_MICROPHONE
  • phoneCall: FOREGROUND_SERVICE_PHONE_CALL
  • remoteMessaging: FOREGROUND_SERVICE_REMOTE_MESSAGING
  • shortService: 필요 권한 없음
  • specialUse: FOREGROUND_SERVICE_SPECIAL_USE

권한은 매니페스트에 추가해 줍니다.

<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL"/>

 

서비스 실행

서비스 실행시에는 startForeground 인자에 서비스 타입을 넣어 준다.

ServiceCompat.startForeground(
    context,
    NOTIFICATION_ID,
    notification,
    ServiceInfo.FOREGROUND_SERVICE_TYPE_PHONE_CALL
)

나는 ServiceCompat이라는 것이 있어서 그걸 사용

 

참조 : 
https://devjss.com/android-14-fgs-types-required/
https://source.android.com/docs/core/permissions/fsi-limits?hl=ko

 

반응형