USE_EXACT_ALARM and SCHEDULE_EXACT_ALARM on Google Play
Checked against Google's policy pages on .
- android.permission.USE_EXACT_ALARM
- android.permission.SCHEDULE_EXACT_ALARM
What does it allow?
Both permissions let an app schedule an alarm that fires at a precise time, even while the device is idle. They differ in who grants them.
USE_EXACT_ALARM is granted at install. SCHEDULE_EXACT_ALARM needs the user's permission, and since Android 14 it is no longer pre-granted to most newly installed apps targeting Android 13 or higher: it starts out denied, and the app must check canScheduleExactAlarms() and send the user to the system setting.
Which apps does Google Play allow to use it?
Google Play restricts USE_EXACT_ALARM to apps whose "core, user facing functionality requires precisely-timed actions": alarm or timer apps, and calendar apps that show event notifications. Apps that declare it are reviewed, and it needs a Play Console declaration.
For any other exact-alarm need, Google's policy points to SCHEDULE_EXACT_ALARM instead, which the user grants and you do not declare.
Why is it in my app?
Notification and reminder libraries sometimes declare an exact-alarm permission in their own manifest so scheduled notifications arrive on time, and the merge puts it into your app whether or not you schedule anything.
To see every permission in your build and which ones may need a declaration, paste your merged manifest into the Play Console permission declaration checker.
What can I use instead?
Most apps do not need an exact alarm. Android's documentation lists the alternatives: WorkManager for scheduled background work (periodic work runs at most every 15 minutes), set() or setWindow() for an inexact alarm, setAndAllowWhileIdle() for roughly-timed work while the device is idle, and a Handler's postDelayed() for repeated work while the app is running.
If a feature really needs an exact time (a reminder the user set for 9:00), use SCHEDULE_EXACT_ALARM, check canScheduleExactAlarms() before scheduling, and fall back to an inexact alarm when the user has not granted it.
How do I remove it?
Add it to your own manifest with tools:node="remove". The manifest merge then leaves it out, whichever library declared it. In Flutter and React Native the file is android/app/src/main/AndroidManifest.xml.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.USE_EXACT_ALARM" tools:node="remove" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" tools:node="remove" />
</manifest>In Expo, block it in your app config instead:
{
"expo": {
"android": {
"blockedPermissions": [
"android.permission.USE_EXACT_ALARM",
"android.permission.SCHEDULE_EXACT_ALARM"
]
}
}
}Then test the feature the library provides: if it needed the permission, that feature may stop working.
How do I declare it if I keep it?
If your app is an alarm, timer or calendar app and keeps USE_EXACT_ALARM, complete the Play Console declaration describing that functionality. If it is not, remove USE_EXACT_ALARM rather than declaring it.
Common questions
- Can I just switch USE_EXACT_ALARM to SCHEDULE_EXACT_ALARM?
- Yes, if your feature can live with the user granting it. Check canScheduleExactAlarms() before each exact alarm and fall back to an inexact one when it returns false.
- Why do my reminders arrive late on Android 14?
- Likely because SCHEDULE_EXACT_ALARM is denied by default there for newly installed apps targeting Android 13 or higher. Ask the user to allow it in settings, or accept inexact timing.
- Does a calendar app qualify for USE_EXACT_ALARM?
- Google's policy names calendar apps that show event notifications as an acceptable use. Whether yours qualifies is decided in review.
Read next
READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and the photo picker
Broad photo and video access. Most apps should use the Android photo picker instead.
ACCESS_BACKGROUND_LOCATION on Google Play
Location while the app is closed. Needs a core feature, a disclosure, a declaration and a video.
MANAGE_EXTERNAL_STORAGE (All files access) on Google Play
All files access. For file managers, backup, antivirus and similar apps only.