OSDN Git Service

Push unlocking/unlocked state to UserManager
[android-x86/frameworks-base.git] / services / core / java / com / android / server / pm / PackageManagerService.java
index d7693b0..5c45b0f 100644 (file)
@@ -190,6 +190,7 @@ import android.os.SystemProperties;
 import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.UserManagerInternal;
 import android.os.storage.IMountService;
 import android.os.storage.MountServiceInternal;
 import android.os.storage.StorageEventListener;
@@ -739,6 +740,8 @@ public class PackageManagerService extends IPackageManager.Stub {
     // List of packages names to keep cached, even if they are uninstalled for all users
     private List<String> mKeepUninstalledPackages;
 
+    private UserManagerInternal mUserManagerInternal;
+
     private static class IFVerificationParams {
         PackageParser.Package pkg;
         boolean replacing;
@@ -3481,7 +3484,7 @@ public class PackageManagerService extends IPackageManager.Stub {
             // give them what they want
         } else {
             // Caller expressed no opinion, so match based on user state
-            if (StorageManager.isUserKeyUnlocked(userId)) {
+            if (getUserManagerInternal().isUserUnlockingOrUnlocked(userId)) {
                 flags |= PackageManager.MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE;
             } else {
                 flags |= PackageManager.MATCH_DIRECT_BOOT_AWARE;
@@ -3490,6 +3493,13 @@ public class PackageManagerService extends IPackageManager.Stub {
         return flags;
     }
 
+    private UserManagerInternal getUserManagerInternal() {
+        if (mUserManagerInternal == null) {
+            mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
+        }
+        return mUserManagerInternal;
+    }
+
     /**
      * Update given flags when being used to request {@link PackageInfo}.
      */