S
Subhankar Bag
Guest
Full-Screen Intent (FSI) Notifications in Android 14 & 15: What Changed, Why Itโs Breaking, and How to Fix It

Android introduced Full-Screen Intent (FSI) notifications to allow apps to grab the userโs immediate attentionโโโtypically used by alarm apps or calling apps.
For example:
- Google Phone uses FSI for incoming calls
- Alarm Clock apps use FSI for wake-up alarms
- Emergency alert apps (fire, medical, SOS) may also rely on FSI
But starting with Android 14 (API 34), and continuing into Android 15, Google has tightened the rules around FSI. If your app isnโt prepared, your full-screen notifications may silently degrade into regular heads-up notificationsโโโespecially on Samsung and other OEM devices.
Letโs break this down.
What Changed in Android 14+
Previously, if you built a notification with a fullScreenIntent, it would just work when the device was locked. But now:
- FSI is restricted to critical use cases only: calling and alarm apps.
- Apps outside these categories do not automatically get FSI permission.
- Users must manually grant permission in Settings.
- Google Play requires developers to declare FSI use cases if their app falls into the calling/alarm category.
This means if youโre building, say, a delivery app that wants to pop up a screen when the driver arrives, your FSI intent will no longer work out-of-the-box.
What Reddit Devs Confirm
From the r/androiddev community:
โIt works only when the device is locked (with password/pin/finger). In all other cases it shows a regular notification.โ
โWhen the user is using their phone, those are shown as notification in top app bar.โ
In short: FSI is now designed only for lock-screen emergencies.
Who is Affected?
- Alarm appsโโโIf you donโt declare FSI use in Play Console, alarms wonโt wake the screen.
- VoIP/call appsโโโIncoming calls may just show a banner instead of a full call screen.
- Emergency appsโโโFire, SOS, or health monitoring apps that relied on FSI may fail to alert properly.
- Custom business apps (e.g., logistics, field operations)โโโAny โurgentโ full-screen notification flow will be downgraded.
How to Check if FSI is Allowed
Android 14+ introduced a runtime check:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
val notificationManager = context.getSystemService(NotificationManager::class.java)
if (notificationManager.canUseFullScreenIntent()) {
// Safe to send FSI
sendFullScreenNotification()
} else {
// Permission not granted
showSnackBarAndRedirectToSettings()
}
}
Redirecting Users to FSI Settings
Use the new ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT intent (Android 14+):
fun goToFullScreenIntentSettings(context: Context) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
val intent = Intent(Settings.ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT).apply {
data = Uri.fromParts("package", context.packageName, null)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context.startActivity(intent)
} else {
// Fallback: old notification settings
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply {
putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
context.startActivity(intent)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
This way, when the user taps โEnable full-screen notificationsโ on your Snackbar or dialog, theyโll land in the correct settings page.
Strategies to Make FSI Work Perfectly
Declare your use case properly
- If youโre a calling or alarm app โ declare FSI in Play Console so Google approves your use.
- If not โ gracefully handle fallback scenarios (donโt depend 100% on FSI).
Runtime check with fallback
- Always check notificationManager.canUseFullScreenIntent().
- If false, show a clear UI prompt (SnackBar, dialog) that explains why user needs to enable it.
Guide users to settings
- Use ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT to deep-link directly to the toggle.
Donโt abuse FSI
- Avoid spamming users with FSI for non-critical events (food delivery, offers, etc.).
- Google Play may reject your app if you misuse this.
Test on OEMs like Samsung
- Samsung, Xiaomi, etc. often add extra restrictions on background launch.
- Verify behavior on both locked and unlocked screens.
Example: Updated Notification Channel Setup
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
val notificationManager = getSystemService(NotificationManager::class.java)
if (!notificationManager.canUseFullScreenIntent()) {
// Show Snackbar + Settings redirect
fullScreenNotificationActionNotEnabled()
} else {
permissionUtil.getPermission(Manifest.permission.USE_FULL_SCREEN_INTENT) { granted ->
if (!granted) fullScreenNotificationActionNotEnabled()
}
}
}
TL;DR
- FSI is now gated in Android 14+โโโonly alarms & calls get it automatically.
- Other apps must rely on user consent (Settings โ Full-Screen Notifications).
- Reddit devs confirm FSI works only on the lock screen.
- Best practice: Check at runtime โ prompt user โ fallback gracefully.


Continue reading...