Docs

Android 17 Temporary Permission Grant Tracking

Android 17's temporary contact and location access model changes how often users grant, revoke, and re-grant permissions — what to track.

Analytics

Android 17, rolling out from June 2026, replaces several all-or-nothing permission grants with temporary and scoped access. The new contact picker lets a user share a single contact instead of the whole address book, and it can grant that access for one session only. Precise location can now be shared temporarily rather than as a permanent toggle. For users, this is a clear privacy win. For anyone tracking permission-gated features, it breaks an assumption that’s been safe for a decade: that a permission grant is durable until the user manually revokes it in Settings.

Apps that treat a permission check as a one-time gate at first launch are the ones most exposed. A contact-sync feature that checked contacts access on day one and never checked again will start silently failing for users who granted temporary access, then closed the app, then reopened it days later — the grant has expired, but nothing in the product told the user or the analytics pipeline that anything changed. Without tracking grant expiry as its own event, that failure looks like a bug report about a broken feature, not what it actually is: an expected consequence of a platform change that the tracking plan never accounted for.

Data Points to Track

  • Grant type at time of check: whether a permission was granted as full, temporary, or scoped access, not just a boolean “granted/denied” — the old binary hides the new middle state
  • Grant expiry events: when a temporary or session-scoped permission lapses, captured as its own event rather than inferred from a later denial
  • Re-prompt frequency per user: how often the same user is asked for the same permission within a rolling 30-day window, since temporary grants mean re-prompting is now normal rather than a UX failure
  • Feature failure correlated with expired grants: whether a permission-gated feature (contact sync, precise-location search) failed specifically because a temporary grant lapsed, versus a denial or a code defect
  • Scoped-vs-full contact access split: what share of users pick a single contact through the new picker versus granting full address book access, since it changes what contact-dependent features can assume about available data

Setup Steps

  1. Replace boolean permission checks with a typed state (full / temporary / scoped / denied / not-yet-asked) everywhere a permission gates a feature.
  2. Log a distinct event on grant expiry, checked at app foreground rather than only at the moment a feature tries to use the permission, so expiry is visible even for features the user hasn’t touched yet.
  3. Add a re-prompt counter per user per permission, and alert if it climbs sharply after an OS update ships, since that’s the clearest signal a permission model changed under you.
  4. Instrument the new contact picker’s selection scope separately from the legacy full-access flow, so contact-dependent features can branch on how much data they actually have.
  5. Backfill a baseline before the Android 17 rollout reaches meaningful device share, so post-rollout permission behaviour has something to compare against.

Actionable Insights

A rising rate of grant-expiry events paired with a flat or falling re-prompt rate means users are letting temporary permissions lapse without re-granting — worth redesigning the prompt to explain why persistent access matters, rather than assuming users forgot. A feature-failure rate that tracks OS version adoption of Android 17 almost one-for-one confirms the failures are platform-driven, not a regression in your own code, which changes the fix from “roll back the release” to “add a graceful degraded state for expired permissions.” And a high scoped-contact-selection rate is a signal to redesign contact-dependent features around “the user shares what they choose to” rather than “the app has the whole address book,” since that’s now the more common case, not the edge case.

Expert help

Need help tracking this in your app?

Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.

Talk to an expert