フォアグラウンド サービスを宣言して権限をリクエストする
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
アプリのマニフェストで、アプリの各フォアグラウンド サービスを <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
というタイプが 1 つだけあります。サービスに複数のタイプが該当する場合は、|
演算子で区切ります。たとえば、サービスがカメラとマイクを使用する場合は、次のように宣言します。
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 以降をターゲットとするアプリのベスト プラクティスを使用しています。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は 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."]]