diff options
| author | Kweku Adams <kwekua@google.com> | 2020-08-19 17:14:33 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-08-19 17:14:33 +0000 |
| commit | 1706f9c22fc66763aba2adeddefdb1ca93772310 (patch) | |
| tree | 184540e4b93b0801f8a20ddf41be2936465454f4 /core/java | |
| parent | e48401c14788af367cddf7c8830fe92dcf6c1ee0 (diff) | |
| parent | e49aa726f0687afec8ab6a040bff7016557ba3da (diff) | |
Merge "Allow package verifier to hide specific fgs notifications." into rvc-qpr-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/ContextImpl.java | 13 | ||||
| -rw-r--r-- | core/java/android/app/IActivityManager.aidl | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 505b498e3cf6..d0fd92294979 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -187,6 +187,16 @@ class ContextImpl extends Context { private static final String XATTR_INODE_CODE_CACHE = "user.inode_code_cache"; /** + * Special intent extra that critical system apps can use to hide the notification for a + * foreground service. This extra should be placed in the intent passed into {@link + * #startForegroundService(Intent)}. + * + * @hide + */ + private static final String EXTRA_HIDDEN_FOREGROUND_SERVICE = + "android.intent.extra.HIDDEN_FOREGROUND_SERVICE"; + + /** * Map from package name, to preference name, to cached preferences. */ @GuardedBy("ContextImpl.class") @@ -1697,9 +1707,12 @@ class ContextImpl extends Context { try { validateServiceIntent(service); service.prepareToLeaveProcess(this); + final boolean hideForegroundNotification = requireForeground + && service.getBooleanExtra(EXTRA_HIDDEN_FOREGROUND_SERVICE, false); ComponentName cn = ActivityManager.getService().startService( mMainThread.getApplicationThread(), service, service.resolveTypeIfNeeded(getContentResolver()), requireForeground, + hideForegroundNotification, getOpPackageName(), getAttributionTag(), user.getIdentifier()); if (cn != null) { if (cn.getPackageName().equals("!")) { diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 945957738f8e..2abe9cf9fce5 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -155,7 +155,8 @@ interface IActivityManager { boolean refContentProvider(in IBinder connection, int stableDelta, int unstableDelta); PendingIntent getRunningServiceControlPanel(in ComponentName service); ComponentName startService(in IApplicationThread caller, in Intent service, - in String resolvedType, boolean requireForeground, in String callingPackage, + in String resolvedType, boolean requireForeground, + boolean hideForegroundNotification, in String callingPackage, in String callingFeatureId, int userId); @UnsupportedAppUsage int stopService(in IApplicationThread caller, in Intent service, |
