diff --git a/core/api/current.txt b/core/api/current.txt index 53890eb5539df..fcf61f5b78fa3 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -6703,6 +6703,7 @@ package android.app { method public boolean areNotificationsEnabled(); method public boolean areNotificationsPaused(); method public boolean canNotifyAsPackage(@NonNull String); + method public boolean canSendFullScreenIntent(); method public void cancel(int); method public void cancel(@Nullable String, int); method public void cancelAll(); diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index f6d27ad08b009..4e94a1dcf6422 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -31,6 +31,7 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.PermissionChecker; import android.content.pm.ParceledListSlice; import android.content.pm.ShortcutInfo; import android.graphics.drawable.Icon; @@ -854,6 +855,32 @@ public class NotificationManager { } } + /** + * Returns whether the calling app can send fullscreen intents. + *
From Android {@link android.os.Build.VERSION_CODES#UPSIDE_DOWN_CAKE}, apps may not have + * permission to use {@link android.Manifest.permission#USE_FULL_SCREEN_INTENT}. If permission + * is denied, notification will show up as an expanded heads up notification on lockscreen. + *
To request access, add the {@link android.Manifest.permission#USE_FULL_SCREEN_INTENT} + * permission to your manifest, and use + * {@link android.provider.Settings#ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT}. + */ + public boolean canSendFullScreenIntent() { + final int result = PermissionChecker.checkPermissionForPreflight(mContext, + android.Manifest.permission.USE_FULL_SCREEN_INTENT, + mContext.getAttributionSource()); + + switch (result) { + case PermissionChecker.PERMISSION_GRANTED: + return true; + case PermissionChecker.PERMISSION_SOFT_DENIED: + case PermissionChecker.PERMISSION_HARD_DENIED: + return false; + default: + if (localLOGV) Log.v(TAG, "Unknown PermissionChecker result: " + result); + return false; + } + } + /** * Creates a group container for {@link NotificationChannel} objects. *