포그라운드 서비스 선언 및 권한 요청
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
앱의 매니페스트에서 <service>
요소로 앱의 각 포그라운드 서비스를 선언합니다. 각 서비스에 android:foregroundServiceType
속성을 사용하여 서비스가 어떤 작업을 하는지 선언합니다.
또한 포그라운드 서비스에 필요한 권한을 요청합니다.
버전 호환성
포그라운드 서비스를 선언하고 권한을 요청하는 요구사항은 앱이 타겟팅하는 API 수준에 따라 다릅니다. 이 페이지에서는 API 수준 34 이상을 타겟팅하는 앱의 요구사항을 설명합니다. 이전 플랫폼 버전의 포그라운드 서비스 변경사항에 관한 자세한 내용은 포그라운드 서비스 변경사항을 참고하세요.
앱 매니페스트에서 포그라운드 서비스 선언
다음 코드는 미디어 재생 포그라운드 서비스를 선언하는 방법을 보여줍니다.
이러한 서비스를 사용하여 음악을 재생할 수 있습니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<application ...>
<service
android:name=".MyMediaPlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="false">
</service>
</application>
</manifest>
코드에 관한 핵심 사항
이 예시에서 서비스에는 media
유형 하나만 있습니다. 서비스에 여러 유형이 적용되는 경우 |
연산자로 구분합니다. 예를 들어 서비스에서 카메라와 마이크를 사용하는 경우 다음과 같이 선언합니다.
android:foregroundServiceType="camera|microphone"
앱이 타겟팅하는 API 수준에 따라 앱 매니페스트에서 포그라운드 서비스를 선언해야 할 수 있습니다. 특정 API 수준의 요구사항은 포그라운드 서비스 변경사항에 설명되어 있습니다.
포그라운드 서비스를 만들려고 하는데 해당 유형이 매니페스트에 선언되어 있지 않으면 시스템은 startForeground()
호출 시 MissingForegroundServiceTypeException
을 발생시킵니다.
필수가 아닌 경우에도 모든 포그라운드 서비스를 선언하고 서비스 유형을 제공하는 것이 좋습니다.
포그라운드 서비스 권한 요청
다음 코드는 카메라를 사용하는 포그라운드 서비스의 권한을 요청하는 방법을 보여줍니다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ...>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA"/>
<application ...>
...
</application>
</manifest>
코드에 관한 핵심 사항
- 이 코드는 API 수준 34 이상을 타겟팅하는 앱의 권장사항을 사용합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-08-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-08-27(UTC)"],[],[],null,["In your app's manifest, declare each of your app's foreground services\nwith a [`\u003cservice\u003e`](/guide/topics/manifest/service-element)\nelement. For each service, use an\n[`android:foregroundServiceType` attribute](/develop/background-work/services/fgs/service-types)\nto declare what kind of work the service does.\n\nIn addition, request any permissions needed by your foreground services.\n| **Important:** All foreground service declarations must comply with the requirements in the [Google Play Device and Network Abuse policy](https://support.google.com/googleplay/android-developer/answer/9888379) and the Google Play [Understanding foreground service requirements\n| documentation](https://support.google.com/googleplay/android-developer/answer/13392821).\n\nVersion compatibility\n\nThe requirements for declaring your foreground services and requesting\npermissions vary depending on what API level your app targets. This page\ndescribes the requirements for apps that target API level 34 or higher. For\ninformation about changes to foreground services in earlier platform versions,\nsee [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\nDeclare foreground services in the app manifest\n\nThe following code shows how to declare a media playback foreground service.\nYou might use a service like this to play music. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n \u003capplication ...\u003e\n\n \u003cservice\n android:name=\".MyMediaPlaybackService\"\n android:foregroundServiceType=\"mediaPlayback\"\n android:exported=\"false\"\u003e\n \u003c/service\u003e\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- In this example, the service has only one type, `media`. If\n multiple types apply to your service, separate them with the `|`\n operator. For example, if your service uses the camera and microphone,\n declare it like this:\n\n android:foregroundServiceType=\"camera|microphone\"\n\n- Depending on what API level your app targets, you may be\n **required** to declare foreground services in the app\n manifest. The requirements for specific API levels are described in\n [Changes to foreground services](/develop/background-work/services/fgs/changes).\n\n If you try to create a foreground service and its type isn't declared\n in the manifest, the system throws a\n [`MissingForegroundServiceTypeException`](/reference/android/app/MissingForegroundServiceTypeException)\n upon calling `startForeground()`.\n\n Even when it isn't required, it's a best practice to declare\n all your foreground services and provide their service types.\n\nRequest the foreground service permissions\n\nThe following code shows how to request permissions for a foreground\nservice that uses the camera. \n\n \u003cmanifest xmlns:android=\"http://schemas.android.com/apk/res/android\" ...\u003e\n\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE\"/\u003e\n \u003cuses-permission android:name=\"android.permission.FOREGROUND_SERVICE_CAMERA\"/\u003e\n\n \u003capplication ...\u003e\n ...\n \u003c/application\u003e\n \u003c/manifest\u003e\n\nKey points about the code\n\n- This code uses best practices for an app that targets API level 34 or higher."]]