Google Play · Foreground Service permissions

How to Fix Google Play Foreground Service Permission Rejection

Align Android 14+ foreground service types, manifest permissions, Play Console declarations, and reviewer evidence after an FGS rejection.

Policy-grounded recovery guideOfficial policy ↗
Have the rejection message open?Get a free diagnosis now. Upgrade to the complete $29 Fix Pack only if it is useful.
Analyze this rejection →

Direct answer

For an app targeting Android 14 or higher, audit every foreground service in the signed bundle. Each service must declare the correct android:foregroundServiceType and the manifest must include the matching FOREGROUND_SERVICE_* permission. Keep the service only when it supports a user-beneficial core feature, is user-initiated or perceptible, can be stopped by the user, cannot be safely deferred, and runs only as long as necessary. Then make the Play Console declaration match that exact release and provide a working video and review path. If the task can use WorkManager, a user-initiated data transfer job, or another deferrable API, remove the ineligible foreground service before resubmitting.

Official sources checked

Match the wording in your rejection

“Functionality is not initiated by or perceptible to the user”

The service may start automatically without a clear user action or continue without an accurate notification or another user-perceptible outcome. Redesign the trigger and visibility, or move the work to a more appropriate background API.

“The declared task can be deferred or interrupted”

Google does not consider a foreground service necessary when system-managed scheduling can complete the work without breaking the user-expected feature. Evaluate WorkManager or a user-initiated data transfer job.

The Play Console declaration does not match the app

Reconcile the declared use case, selected service type, manifest, runtime behavior, store listing, demo video, and exact signed version code. A correct source manifest is insufficient if the delivered bundle or declaration differs.

A foreground service permission appears unexpectedly

Inspect the merged manifest and dependency graph. An SDK, library, product flavor, or legacy service can add a FOREGROUND_SERVICE_* permission or service declaration even when the main manifest does not.

What this rejection usually means

A Google Play foreground-service rejection is usually a four-way mismatch: the service's real task, its android:foregroundServiceType, the matching FOREGROUND_SERVICE_* permission, and the use case declared in Play Console do not tell the same verifiable story. For apps targeting Android 14 or higher, Google requires a valid type for each foreground service. Policy review also asks whether the feature is core and beneficial, user-initiated or perceptible, user-stoppable, non-deferrable, and limited to the necessary duration. Passing Android runtime checks does not by itself prove Play policy eligibility.

Likely rejection signals

  • A service has no android:foregroundServiceType or uses a type that does not describe its actual task
  • The matching FOREGROUND_SERVICE_* permission is missing, extra, or contributed by a dependency
  • A dataSync or other service performs periodic, silent, retryable, or otherwise deferrable work
  • The foreground notification is vague, delayed, inaccurate, or does not let the user understand and stop the task
  • The Play Console declaration, demo video, store listing, and signed version code describe different behavior
  • An SDK, flavor, inactive feature, or older release track still contains an undeclared foreground service

Recovery plan

  1. Preserve the complete rejection notice and record the package name, affected version code, target SDK, cited FGS type or permission, release track, and current declaration. Do not resubmit the same bundle while diagnosing the mismatch.
  2. Inspect the signed Android App Bundle, merged manifests for every variant, and dependency contributions. Inventory each <service>, its android:foregroundServiceType value, every FOREGROUND_SERVICE_* permission, the code path that starts it, and the conditions that stop it.
  3. Map every service to one documented Android foreground-service type and its prerequisites. Remove broad, duplicated, unused, or SDK-inherited declarations. If a service performs more than one task, declare only the types actually used and make sure each runtime path satisfies the requirements for those types.
  4. Apply Google's policy test to each remaining service: the feature must benefit the user and relate to the app's core functionality; be user-initiated or perceptible; be stoppable by the user; be harmed if deferred or interrupted; and run only as long as necessary. Replace retryable, periodic, or deferrable work with WorkManager or another appropriate API. Consider a user-initiated data transfer job for qualifying user-requested network transfers.
  5. Repair the user experience. Start the service from a clear user action when applicable, call startForeground within the required platform window, show an accurate ongoing notification, expose a reliable stop or cancel route, stop the service as soon as the task finishes, and handle permission denial and platform restrictions without hidden fallback behavior.
  6. In Play Console, open Policy → App content and update the foreground service declaration for the exact release. Select the type that matches the manifest, describe one concrete core workflow, explain user impact and why deferral breaks it, and provide precise reviewer access instructions.
  7. Record a short, accessible Android video from a clean install of the signed release. Show the user action that starts the feature, the complete foreground behavior and notification, the user-visible result, and how the user stops it. Include working test credentials when the feature is restricted.
  8. Test the signed bundle on supported Android versions with fresh install, permission granted and denied, interrupted network, task cancellation, app backgrounding, process restart where relevant, and completion. Confirm that the final manifest, Play Console declaration, Data safety answers, store listing, and video all match.
  9. Submit one corrected release. In the policy response, identify the version code, exact service type and permission, completed implementation or declaration changes, and the shortest reviewer path. Appeal instead only when release-specific evidence shows the reviewed artifact already complied or the wrong artifact was evaluated.

Evidence to prepare

  • Full rejection notice, package name, target SDK, version code, release track, and cited FGS permission or type
  • Merged-manifest and signed-bundle inventory of every foreground service, android:foregroundServiceType value, and FOREGROUND_SERVICE_* permission
  • Code-path map showing the user trigger, start condition, ongoing notification, stop control, completion, and failure handling
  • Play Console declaration screenshots matching the exact version and actual core workflow
  • Accessible Android recording showing initiation, perceptible behavior, notification, user benefit, and termination
  • Reviewer credentials and numbered navigation for restricted functionality
  • Test results for clean install, supported Android versions, permission denial, cancellation, backgrounding, interruption, and completion

Appeal or fix first?

APPEAL / CLARIFY

Clarify or appeal when the signed version reviewed by Google already declares the correct minimum type and permission, the Play Console declaration matches it, and the demonstrated feature satisfies every policy criterion. Identify the exact version code and attach the merged manifest, declaration, video, and reviewer path that disprove the cited mismatch.

FIX BEFORE RESUBMITTING

Fix and resubmit when the service is silent or deferrable, the user cannot stop it, it runs longer than needed, the type or permission is missing or inaccurate, an SDK adds an unused declaration, or the Play Console evidence does not demonstrate the signed release's actual workflow.

Choose the next action

What you can verifyRecommended path
The task is user-triggered, immediately valuable, visible to the user, stoppable, and cannot be deferred without breaking the expected featureKeep the minimum valid FGS type, correct the implementation and declaration, and resubmit with release-specific proof.
The task is periodic, opportunistic, silent, or can wait for system schedulingFix first: replace the foreground service with the appropriate background-work API and remove its service type and permission if no longer used.
The reviewed signed bundle and declaration already match, but Google cites a different service, type, or versionClarify or appeal with the version code, merged manifest, declaration screenshots, runtime recording, and exact reviewer path.

Reviewer response framework

Your response should be factual, short, and limited to the submitted build. Cover these points:

  1. Identify the package, target SDK, release track, version code, service class, FGS type, and matching permission.
  2. State whether the service was removed, replaced with another API, or retained under an eligible core use case.
  3. List only completed changes present in the signed release, including initiation, notification, stop behavior, and duration.
  4. Confirm that the Play Console declaration and video match the same release and provide exact reviewer navigation and credentials.
  5. If appealing, identify the specific factual mismatch and attach release-specific proof rather than promising future changes.

Frequently asked questions

Is declaring FOREGROUND_SERVICE in the manifest enough for Android 14?

No. Apps targeting Android 14 or higher must declare a valid foreground service type for each service and the permission appropriate to that type. Google Play also reviews whether the use case itself meets the foreground-service policy criteria.

Why was my app rejected when the foreground service works on my test device?

Runtime success proves only part of the requirement. Google also compares the signed bundle, Play Console declaration, user initiation or perceptibility, user control, necessity, duration, and reviewer evidence.

Should I use WorkManager instead of a foreground service?

Use a system-managed alternative when the work can be deferred or interrupted without breaking the user-expected feature. Keep a foreground service for eligible work that must remain immediate and user-perceptible.

Can a library cause a foreground service rejection?

Yes. Libraries and SDKs can contribute service declarations and permissions to the merged manifest. Audit the signed bundle and remove or override declarations that the shipped app does not need.

Should I appeal after correcting the foreground service declaration?

A corrected release is usually the direct path when the rejected bundle or declaration was wrong. Appeal when the exact reviewed artifact already complied or Google evaluated the wrong service or version, and prove that with version-specific evidence.

Need a rejection-specific plan?

Start with the free diagnosis. The $29 Fix Pack adds the prioritized remediation plan, evidence checklist, reviewer-ready reply, and preflight.

Analyze my rejection

Source: Google Play — Permissions for Foreground Services. Platform policies change. Verify the official rule before submitting. Resubmit AI provides technical and editorial decision support, not an approval guarantee or legal advice.