Google Play · SMS and Call Log Permissions

How to Fix Google Play SMS and Call Log Permissions Rejection

Audit restricted SMS and call-log permissions, verify default-handler or exception eligibility, replace ineligible access, and prepare a release-specific declaration.

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

Inspect the exact signed Android App Bundle and identify every requested SMS or Call Log permission. If the app is not the active default SMS, Phone, or Assistant handler and its core purpose does not match a specific Google Play exception, remove the restricted permissions and replace them with a narrower API such as SMS Retriever, SMS Intent, Share Intent, or Dial Intent. If the app is eligible, request the default-handler role before the associated runtime permission, stop using the permission when the role is lost, make the core feature prominent in the listing, and submit an accurate Permissions Declaration Form. Upload a new build after any manifest or behavior change. Appeal only when the exact reviewed artifact already meets the rule or Google relied on an incorrect version, role flow, or declared use.

Official sources checked

Match the wording in your rejection

“Your app does not meet the requirements for SMS or Call Log permissions”

Map each requested permission to a permitted default-handler role or to one exact exception in Google's table. A generally useful feature or a broad statement about user benefit is not enough.

“Permission use is not directly related to the app's core purpose”

Google defines core functionality as the main purpose without which the app is broken or unusable. The feature must also be prominent in the Play listing and implemented in the reviewed release.

Google detects a restricted permission that you believe you removed

Inspect the merged manifest inside the signed AAB and every relevant active artifact. A dependency, product flavor, dynamic feature, or older served APK can retain the permission.

The declaration or reviewer video does not match the app

The declared use, eligible permission set, listing, role-selection flow, runtime request, and actual data handling must describe the same release. A declaration cannot make an ineligible use acceptable.

What this rejection usually means

Google Play treats SMS and Call Log permissions as highly sensitive. The normal permitted path is an app that actively serves as the user's default SMS, Phone, or Assistant handler; Google also lists narrowly defined exceptions where the permission enables critical core functionality and no alternative method exists. Eligibility is permission-specific. For example, a use case that may qualify for SEND_SMS does not automatically qualify for READ_SMS or READ_CALL_LOG. Recovery therefore starts with the exact permissions in the shipped artifact, the app's actual role, and the precise policy row—not with a broader privacy explanation.

Likely rejection signals

  • READ_SMS, SEND_SMS, RECEIVE_SMS, WRITE_SMS, RECEIVE_MMS, RECEIVE_WAP_PUSH, READ_CALL_LOG, WRITE_CALL_LOG, or PROCESS_OUTGOING_CALLS appears in the merged manifest
  • The app asks for an SMS or Call Log permission before the user makes it the relevant default handler
  • The app keeps reading or writing protected data after it is no longer the default handler
  • A secondary feature such as OTP autofill, invitations, call initiation, translation, alerts, or profiling uses broad access despite a safer alternative
  • The declaration selects an exception but the requested permission is not listed for that exception
  • The store listing does not prominently describe the core SMS, Phone, Assistant, or exception functionality
  • A library, product flavor, dynamic feature, internal track, or older active APK contributes a restricted permission
  • SMS or call-log data reaches an SDK, server, analytics system, ad system, or retention process beyond the approved purpose

Recovery plan

  1. Preserve the full enforcement notice and record the package name, version code, AAB, release track, review date, rejected permission names, selected declaration use case, and any reviewer attachment.
  2. Inspect the merged manifest from the exact signed AAB and every relevant active artifact. Identify the source module, SDK, library, product flavor, or older APK that contributes each SMS or Call Log permission.
  3. Create a permission-to-purpose matrix. For each restricted permission, document the user action, data read or written, default-handler role, policy exception claimed, server or SDK recipients, retention, and behavior when access is denied.
  4. Apply the eligibility gate separately to every permission. Confirm either that the app performs the complete default SMS, Phone, or Assistant role, or that the core function matches a named exception and has no viable alternative. Remove any permission that fails this test.
  5. Replace ineligible access with the policy-recommended narrower path. Use SMS Retriever or manual entry for SMS OTP, SMS Intent to initiate a message, Share Intent for sharing or invites, and Dial Intent to open the phone app for a user-initiated call.
  6. Remove the permission at its real source. Update or remove contributing libraries and manifests, rebuild each affected variant, and verify the final signed artifact rather than only the main AndroidManifest.xml file.
  7. For a default-handler path, make the app capable of the complete role, explain that role prominently in the Play listing, ask the user to become the default handler before requesting associated permissions, and stop protected access as soon as the role is lost.
  8. For an exception path, quote the exact eligible use internally, retain only the permissions listed for that row, prove the function is critical to the app's main purpose, and document why the safer alternatives cannot provide it.
  9. Reconcile the Permissions Declaration Form, privacy policy, applicable Data safety answers, prominent disclosure and consent, reviewer instructions, and data-flow inventory with the exact behavior of the new release. Resubmit the declaration whenever the restricted-permission use changes.
  10. Test a clean installation of the release build. Record role acceptance and refusal, runtime permission grant and denial, role loss, offline or backend failure, and the complete reviewer path. Confirm that no unrelated SDK receives protected SMS or Call Log data.
  11. Choose the recovery route: submit a new build for manifest, SDK, code, UI, role-flow, or data-handling changes; appeal only when the exact reviewed artifact already complied or the enforcement relied on a verifiable wrong fact.
  12. Plan for the announced January 27, 2027 change: Google says account verification via phone call will no longer qualify for READ_CALL_LOG. Migrate that flow to Digital Credentials, SMS Retriever, another approved provider, or manual verification before the new rule applies.

Evidence to prepare

  • Full enforcement notice with package, version code, track, date, and cited permissions
  • Merged-manifest output for the exact signed AAB plus the dependency or module contributing each permission
  • Inventory of active artifacts showing where restricted permissions remain or have been removed
  • Permission-to-purpose matrix tied to the default-handler role or exact exception row
  • Before-and-after manifest and dependency diff for every removed permission
  • Screenshots or recording showing default-role selection before the runtime request and access stopping after role loss
  • Current Permissions Declaration Form, store listing, privacy policy, Data safety answers, and reviewer instructions
  • Data-flow map covering local processing, servers, SDKs, retention, sharing, and deletion
  • Clean-install test recording using the exact release build and a reviewer-accessible account or setup

Appeal or fix first?

APPEAL / CLARIFY

Appeal or request clarification when the exact reviewed artifact does not request the cited permission, Google identified the wrong version or track, or the release already implements an eligible default-handler or exception flow with accurate declarations and verifiable evidence. Address the specific factual error and avoid promising future corrections in an appeal.

FIX BEFORE RESUBMITTING

Fix and submit a new build when any restricted permission is unnecessary, the role is requested in the wrong order, the app continues access after losing the role, a safer API supports the use case, the claimed exception does not match every permission, an old artifact still contains the permission, or the declaration and data handling are inconsistent.

Choose the next action

What you can verifyRecommended path
The app only verifies an SMS one-time codeRemove broad SMS permissions and use SMS Retriever or manual code entry. Do not request READ_SMS or RECEIVE_SMS merely to simplify OTP entry.
The user only initiates a message, share, or phone callUse SMS Intent, Share Intent, or Dial Intent so the user completes the action in an appropriate handler without restricted data access.
The app genuinely performs the complete default SMS, Phone, or Assistant roleKeep only role-appropriate permissions, request the role first, stop access when the role is lost, document the capability in the listing, and complete the declaration.
The app is not a default handler but matches a named exception and no alternative can provide its critical core functionPrepare an exception-specific declaration and evidence using only the permissions Google lists for that use. Approval remains subject to review.
The reviewed artifact already follows the role or exception rules and the notice names an incorrect factClarify or appeal with version-specific manifest, role-flow, declaration, and test evidence rather than resubmitting unchanged without explanation.

Reviewer response framework

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

  1. Identify the package, version code, track, restricted permissions, and cited policy finding.
  2. State whether each permission was removed, retained for a default-handler role, or retained under one exact exception.
  3. For removals, name the replacement API and attach the signed-artifact manifest diff.
  4. For retained access, show the role sequence or exception eligibility, core-function necessity, approved data flow, and declaration.
  5. Request review of the corrected build or reconsideration of the documented artifact without making unsupported approval claims.

Frequently asked questions

Does an app need SEND_SMS just to open a prefilled message?

Usually no. Google points developers to SMS Intent when the app only needs to initiate a message. The user can review and send it through an appropriate messaging app without your app receiving broad SMS access.

Can I use READ_SMS or RECEIVE_SMS for OTP autofill?

Google recommends SMS Retriever, which can support SMS-based verification without an SMS runtime permission, or manual code entry when Retriever is not suitable. Broad SMS access for ordinary account verification is not the minimum-scope path.

Can a non-default app use SMS or Call Log permissions?

Only if its critical core functionality matches a specific Google Play exception, no alternative method can provide that function, and Google approves the declaration. Keep only the permissions listed for the exact exception.

Why is Google still detecting a permission after I removed it?

A library, flavor, feature module, or older active APK may still contribute it. Inspect the merged manifest in the signed AAB and reconcile every relevant artifact and track, not only the main source manifest.

Can READ_CALL_LOG still be used for phone-call account verification?

Google's current help page still lists a limited phone-call verification exception, but it has announced that this use will no longer be permitted from January 27, 2027. Do not assume an exception is guaranteed, and migrate the flow before the new rule takes effect.

Should I appeal or upload a corrected build?

Upload a new build whenever you changed permissions, dependencies, role handling, code, or data use. Appeal only if the exact reviewed release already complied or Google relied on a specific incorrect artifact or fact.

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 — Use of SMS or Call Log permission groups. Platform policies change. Verify the official rule before submitting. Resubmit AI provides technical and editorial decision support, not an approval guarantee or legal advice.