Understanding foreground service requirements

In order to enable developers to create apps that deliver a consistent user experience, we’re introducing additional foreground service types along with a new set of related policy restrictions. This article explains upcoming foreground service requirements and how to declare foreground service information in Play Console.

Foreground service requirements for Android 14

To help you identify which use cases are appropriate for foreground services and clearly define the intent of the background work of your app, Android 14 and above requires you to do the following before you use a foreground service:

The Permissions for Foreground Services (FGS) section of our Device and Network Abuse policy outlines the criteria required for using foreground services in detail. You are required to declare foreground service types when you update to Android 14.

Declaring your foreground service information in Play Console

When your apps target Android 14 and above, you’ll need to declare any foreground service types that you use in a new declaration on the App content page (Policy > App content) in Play Console.

For each foreground service type you declare, you'll need to do the following:

  1. Provide a description of the app functionality that is using each foreground service type.
  2. Describe the user impact if the task is deferred by the system (does not start immediately) and/or the task is interrupted by the system (paused and/or restarted).
  3. Include a link to a video demonstrating each foreground service feature. The video should demonstrate the steps the user needs to take in your app in order to trigger the feature.

The declaration will be available by November 2023, and we’ll provide you time to complete the declaration, receive feedback, and make adjustments if needed.

Frequently asked questions

What is changing for foreground services in Android 14?

We’re introducing several new foreground service types, and it will be mandatory to declare a foreground service type along with its appropriate foreground service permission. For example, if you’re declaring the "camera" foreground service type, you must also declare the FOREGROUND_SERVICE_CAMERA permission. Your foreground usage must also comply with the other requirements outlined in our Device and Network Abuse policy.

How do I know what foreground service type to use?

Choose the foreground service type that best matches your intended foreground service usage. For example, an exercise app that tracks a user’s exercise can declare the "health" foreground service type. You may also choose multiple foreground service types if applicable to your app.

What is a foreground service permission, and does it need to be granted by the user before starting a foreground service?

When apps that target Android 14 use a foreground service, developers must declare the appropriate foreground service permission for that specific foreground service type. For example, if your app uses the "location" foreground service type, you'll need to declare the FOREGROUND_SERVICE_LOCATION permission. Foreground service permissions that refer to a specific foreground service type are defined as normal permissions and are granted by default at install-time. Users cannot revoke these permissions.

Are there any additional requirements in addition to declaring the appropriate foreground service permission?

Depending on the foreground service type, there may be additional system requirements. Some of these may be runtime permissions and require users to grant permission before they can be used. For example, if using the "location" foreground service type, the user must also grant either the ACCESS_COARSE_LOCATION or the ACCESS_FINE_LOCATION permission. Refer to the documentation for the latest information.

What if my foreground use case doesn’t match any of the defined foreground service types?

In limited scenarios, if your use case meets the other characteristics required for foreground service usage (as described in the policy), you may declare the foreground service TYPE_SPECIAL_USE type. All foreground service types are subject to review.

What does "user perceptible" mean?

User perceptible means that the user should be aware that a foreground service task is running on their device. Users can be considered aware if they initiate the action themselves; for example, the user might play a song or track a run. Your app can also make users aware of an ongoing foreground service by presenting a clear and accurate notification in the task bar on the device.

What if I target versions prior to Android 14?

If you are targeting an Android version prior to Android 14, continue to use the android:foregroundServiceType attribute within the <service> element of your app’s manifest file.

What is the difference between the dataSync foreground service type and User-Initiated Data Transfer?

User-initiated data transfer jobs are designed to simplify over-the-network data transfers. They have constraint tracking and automatically manage wakelocks. The dataSync foreground service type can include transferring data locally or over a network, and may include processing data locally on device. If your use case is for transferring data over a network (such as Wi-Fi, mobile, or Bluetooth) in response to an explicit user request, we recommend using the user-initiated data transfer job instead of the dataSync foreground service type.

Was this helpful?
How can we improve it?

Need more help?

Sign in for additional support options to quickly solve your issue

Clear search
Close search
Google apps
Main menu
Search Help Center