Add per-user versions of set{Component,Application}EnabledSetting.
Change-Id: Id63b233308e92a4c360f38d4728c519ac2131ff0
Fixes: 30230444
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index 8cc1bc4..5d87528 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -2080,8 +2080,14 @@
@Override
public void setComponentEnabledSetting(ComponentName componentName,
int newState, int flags) {
+ setComponentEnabledSettingAsUser(componentName, newState, flags, mContext.getUserId());
+ }
+
+ @Override
+ public void setComponentEnabledSettingAsUser(ComponentName componentName,
+ int newState, int flags, int userId) {
try {
- mPM.setComponentEnabledSetting(componentName, newState, flags, mContext.getUserId());
+ mPM.setComponentEnabledSetting(componentName, newState, flags, userId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2099,9 +2105,16 @@
@Override
public void setApplicationEnabledSetting(String packageName,
int newState, int flags) {
+ setApplicationEnabledSettingAsUser(packageName, newState, flags,
+ mContext.getUserId());
+ }
+
+ @Override
+ public void setApplicationEnabledSettingAsUser(String packageName,
+ int newState, int flags, int userId) {
try {
mPM.setApplicationEnabledSetting(packageName, newState, flags,
- mContext.getUserId(), mContext.getOpPackageName());
+ userId, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 281d6f6..511ed75 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -5381,6 +5381,14 @@
int newState, int flags);
/**
+ * Per-user version of {@link #setComponentEnabledSetting(ComponentName, int, int)}
+ *
+ * @hide
+ */
+ public abstract void setComponentEnabledSettingAsUser(ComponentName componentName,
+ int newState, int flags, int userId);
+
+ /**
* Return the enabled setting for a package component (activity,
* receiver, service, provider). This returns the last value set by
* {@link #setComponentEnabledSetting(ComponentName, int, int)}; in most
@@ -5419,6 +5427,14 @@
int newState, int flags);
/**
+ * Per-user version of {@link #setApplicationEnabledSetting(String, int, int)}
+ *
+ * @hide
+ */
+ public abstract void setApplicationEnabledSettingAsUser(String packageName,
+ int newState, int flags, int userId);
+
+ /**
* Return the enabled setting for an application. This returns
* the last value set by
* {@link #setApplicationEnabledSetting(String, int, int)}; in most
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 68ccbdf..79a5665 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -27,7 +27,6 @@
import android.app.ActivityManager;
import android.app.ActivityManagerInternal;
import android.app.ActivityManagerNative;
-import android.app.AppGlobals;
import android.app.IActivityManager;
import android.app.IStopUserCallback;
import android.app.KeyguardManager;
@@ -38,7 +37,6 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentSender;
-import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.UserInfo;
@@ -2930,17 +2928,13 @@
if (!TextUtils.isEmpty(demoLauncher)) {
ComponentName componentToEnable = ComponentName.unflattenFromString(demoLauncher);
String demoLauncherPkg = componentToEnable.getPackageName();
- try {
- final IPackageManager iPm = AppGlobals.getPackageManager();
- iPm.setComponentEnabledSetting(componentToEnable,
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
- /* userId= */ userId);
- iPm.setApplicationEnabledSetting(demoLauncherPkg,
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
- /* userId= */ userId, null);
- } catch (RemoteException re) {
- // Internal, shouldn't happen
- }
+ final PackageManager pm = mContext.getPackageManager();
+ pm.setComponentEnabledSettingAsUser(componentToEnable,
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
+ /* userId= */ userId);
+ pm.setApplicationEnabledSettingAsUser(demoLauncherPkg,
+ PackageManager.COMPONENT_ENABLED_STATE_ENABLED, /* flags= */ 0,
+ /* userId= */ userId);
}
}
}
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 330dbab..4eae4ab 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -752,6 +752,13 @@
throw new UnsupportedOperationException();
}
+ /** @hide - hidden in superclass */
+ @Override
+ public void setComponentEnabledSettingAsUser(ComponentName componentName,
+ int newState, int flags, int userId) {
+ throw new UnsupportedOperationException();
+ }
+
@Override
public int getComponentEnabledSetting(ComponentName componentName) {
throw new UnsupportedOperationException();
@@ -762,6 +769,13 @@
throw new UnsupportedOperationException();
}
+ /** @hide - hidden in superclass */
+ @Override
+ public void setApplicationEnabledSettingAsUser(String packageName, int newState, int flags,
+ int userId) {
+ throw new UnsupportedOperationException();
+ }
+
@Override
public int getApplicationEnabledSetting(String packageName) {
throw new UnsupportedOperationException();
diff --git a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
index b3ed9e1..cef622b 100644
--- a/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
+++ b/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java
@@ -712,6 +712,11 @@
}
@Override
+ public void setComponentEnabledSettingAsUser(ComponentName componentName, int newState,
+ int flags, int userId) {
+ }
+
+ @Override
public int getComponentEnabledSetting(ComponentName componentName) {
return 0;
}
@@ -721,6 +726,11 @@
}
@Override
+ public void setApplicationEnabledSettingAsUser(String packageName, int newState, int flags,
+ int userId) {
+ }
+
+ @Override
public int getApplicationEnabledSetting(String packageName) {
return 0;
}