OSDN Git Service

Add per-user versions of set{Component,Application}EnabledSetting.
authorSudheer Shanka <sudheersai@google.com>
Wed, 20 Jul 2016 00:49:33 +0000 (17:49 -0700)
committerSudheer Shanka <sudheersai@google.com>
Wed, 20 Jul 2016 17:30:57 +0000 (10:30 -0700)
Change-Id: Id63b233308e92a4c360f38d4728c519ac2131ff0
Fixes: 30230444

core/java/android/app/ApplicationPackageManager.java
core/java/android/content/pm/PackageManager.java
services/core/java/com/android/server/pm/UserManagerService.java
test-runner/src/android/test/mock/MockPackageManager.java
tools/layoutlib/bridge/src/com/android/layoutlib/bridge/android/BridgePackageManager.java

index 8cc1bc4..5d87528 100644 (file)
@@ -2080,8 +2080,14 @@ public class ApplicationPackageManager extends PackageManager {
     @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 @@ public class ApplicationPackageManager extends PackageManager {
     @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();
         }
index 281d6f6..511ed75 100644 (file)
@@ -5381,6 +5381,14 @@ public abstract class PackageManager {
             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 @@ public abstract class PackageManager {
             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
index 68ccbdf..79a5665 100644 (file)
@@ -27,7 +27,6 @@ import android.app.Activity;
 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.Context;
 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 @@ public class UserManagerService extends IUserManager.Stub {
             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);
             }
         }
     }
index 330dbab..4eae4ab 100644 (file)
@@ -752,6 +752,13 @@ public class MockPackageManager extends PackageManager {
         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 @@ public class MockPackageManager extends PackageManager {
         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();
index b3ed9e1..cef622b 100644 (file)
@@ -712,6 +712,11 @@ public class BridgePackageManager extends PackageManager {
     }
 
     @Override
+    public void setComponentEnabledSettingAsUser(ComponentName componentName, int newState,
+            int flags, int userId) {
+    }
+
+    @Override
     public int getComponentEnabledSetting(ComponentName componentName) {
         return 0;
     }
@@ -721,6 +726,11 @@ public class BridgePackageManager extends PackageManager {
     }
 
     @Override
+    public void setApplicationEnabledSettingAsUser(String packageName, int newState, int flags,
+            int userId) {
+    }
+
+    @Override
     public int getApplicationEnabledSetting(String packageName) {
         return 0;
     }