diff options
4 files changed, 14 insertions, 3 deletions
diff --git a/cmds/content/src/com/android/commands/content/Content.java b/cmds/content/src/com/android/commands/content/Content.java index 36e51b9703c9..12fb4a375058 100644 --- a/cmds/content/src/com/android/commands/content/Content.java +++ b/cmds/content/src/com/android/commands/content/Content.java @@ -470,7 +470,8 @@ public class Content { onExecute(provider); } finally { if (provider != null) { - activityManager.removeContentProviderExternal(providerName, token); + activityManager.removeContentProviderExternalAsUser( + providerName, token, mUserId); } } } catch (Exception e) { diff --git a/cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/ShellUiAutomatorBridge.java b/cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/ShellUiAutomatorBridge.java index 950a258d123d..455e4bbc0b76 100644 --- a/cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/ShellUiAutomatorBridge.java +++ b/cmds/uiautomator/library/testrunner-src/com/android/uiautomator/core/ShellUiAutomatorBridge.java @@ -84,7 +84,8 @@ public class ShellUiAutomatorBridge extends UiAutomatorBridge { cursor.close(); } if (provider != null) { - activityManager.removeContentProviderExternal(providerName, token); + activityManager.removeContentProviderExternalAsUser(providerName, token, + UserHandle.USER_SYSTEM); } } } catch (RemoteException e) { diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl index 16360b3bf5a8..2490caef1b2f 100644 --- a/core/java/android/app/IActivityManager.aidl +++ b/core/java/android/app/IActivityManager.aidl @@ -263,7 +263,9 @@ interface IActivityManager { void killAllBackgroundProcesses(); ContentProviderHolder getContentProviderExternal(in String name, int userId, in IBinder token, String tag); + /** @deprecated - Use {@link #removeContentProviderExternalAsUser} which takes a user ID. */ void removeContentProviderExternal(in String name, in IBinder token); + void removeContentProviderExternalAsUser(in String name, in IBinder token, int userId); // Get memory information about the calling process. void getMyMemoryState(out ActivityManager.RunningAppProcessInfo outInfo); boolean killProcessesBelowForeground(in String reason); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b64e8b87aeec..930ec3ad236f 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -8406,10 +8406,17 @@ public class ActivityManagerService extends IActivityManager.Stub } } + /** @deprecated - Use {@link #removeContentProviderExternalAsUser} which takes a user ID. */ + @Deprecated + @Override public void removeContentProviderExternal(String name, IBinder token) { + removeContentProviderExternalAsUser(name, token, UserHandle.getCallingUserId()); + } + + @Override + public void removeContentProviderExternalAsUser(String name, IBinder token, int userId) { enforceCallingPermission(android.Manifest.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY, "Do not have permission in call removeContentProviderExternal()"); - int userId = UserHandle.getCallingUserId(); long ident = Binder.clearCallingIdentity(); try { removeContentProviderExternalUnchecked(name, token, userId); |