diff options
| author | 2016-08-03 17:20:03 -0600 | |
|---|---|---|
| committer | 2016-08-03 17:20:11 -0600 | |
| commit | 847bd85fc18f3fe851fd20d9e79d566074f595e8 (patch) | |
| tree | f1917f130402fc39ee84e4a1241c46fb8ba7694f | |
| parent | fbd93027e4f8024642271652e490653a4d0c2b55 (diff) | |
We don't need to wait to pin the camera app.
There are PackageManager flags we can use to resolve the camera app
for a given user, even while they're still locked.
Bug: 30621101
Change-Id: I0098c9423e2cd453e957d4365cfbcac5ccbb2947
| -rw-r--r-- | services/core/java/com/android/server/PinnerService.java | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java index 7ea8f1f4924d..356ccb3596a9 100644 --- a/services/core/java/com/android/server/PinnerService.java +++ b/services/core/java/com/android/server/PinnerService.java @@ -17,26 +17,23 @@ package com.android.server; import android.content.Context; +import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.content.res.Resources; -import android.content.Intent; -import android.util.EventLog; -import android.util.Slog; import android.os.Binder; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.os.Process; +import android.os.UserHandle; import android.provider.MediaStore; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; import android.system.StructStat; +import android.util.Slog; import com.android.internal.app.ResolverActivity; import com.android.internal.os.BackgroundThread; @@ -44,12 +41,10 @@ import com.android.internal.os.BackgroundThread; import dalvik.system.DexFile; import dalvik.system.VMRuntime; -import java.util.ArrayList; -import java.util.List; import java.io.FileDescriptor; -import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; /** * <p>PinnerService pins important files for key processes in memory.</p> @@ -89,20 +84,10 @@ public final class PinnerService extends SystemService { } mBinderService = new BinderService(); publishBinderService("pinner", mBinderService); - mPinnerHandler.sendMessage( - mPinnerHandler.obtainMessage(PinnerHandler.PIN_ONSTART_MSG)); - } - /** - * Pin camera on unlock. - * We have to wait for unlock because the user's - * preference for camera is not available from PackageManager until after - * unlock - */ - @Override - public void onUnlockUser(int userHandle) { - mPinnerHandler.sendMessage( - mPinnerHandler.obtainMessage(PinnerHandler.PIN_CAMERA_MSG, userHandle, 0)); + mPinnerHandler.obtainMessage(PinnerHandler.PIN_ONSTART_MSG).sendToTarget(); + mPinnerHandler.obtainMessage(PinnerHandler.PIN_CAMERA_MSG, UserHandle.USER_SYSTEM, 0) + .sendToTarget(); } /** @@ -113,8 +98,7 @@ public final class PinnerService extends SystemService { */ @Override public void onSwitchUser(int userHandle) { - mPinnerHandler.sendMessage( - mPinnerHandler.obtainMessage(PinnerHandler.PIN_CAMERA_MSG, userHandle, 0)); + mPinnerHandler.obtainMessage(PinnerHandler.PIN_CAMERA_MSG, userHandle, 0).sendToTarget(); } /** @@ -194,8 +178,10 @@ public final class PinnerService extends SystemService { // device without a fbe enabled, the _SECURE intent will never get set. Intent cameraIntent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA); PackageManager pm = mContext.getPackageManager(); - ResolveInfo cameraResolveInfo = pm.resolveActivityAsUser( - cameraIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle); + ResolveInfo cameraResolveInfo = pm.resolveActivityAsUser(cameraIntent, + PackageManager.MATCH_DEFAULT_ONLY | PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE, + userHandle); if (cameraResolveInfo == null ) { //this is not necessarily an error if (DEBUG) { |