diff options
| author | Jim Miller <jaggies@google.com> | 2012-10-02 13:58:00 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-02 13:58:01 -0700 |
| commit | c6e570dbadc3689bc80c0516492a3209d5f6742b (patch) | |
| tree | 39585f6150e5882004c8f02a1fbbdbdd0498de4d /policy | |
| parent | c12dd973724f5aab44814b31650b4b47314e952b (diff) | |
| parent | ee82f8fa2d47fc1dbfc29582ae348b3c45ff8fe0 (diff) | |
| download | frameworks_base-c6e570dbadc3689bc80c0516492a3209d5f6742b.zip frameworks_base-c6e570dbadc3689bc80c0516492a3209d5f6742b.tar.gz frameworks_base-c6e570dbadc3689bc80c0516492a3209d5f6742b.tar.bz2 | |
Merge "Fix camera disambiguation in secure keyguard" into jb-mr1-dev
Diffstat (limited to 'policy')
3 files changed, 37 insertions, 3 deletions
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java index 5922810..8776a80 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardFaceUnlockView.java @@ -153,7 +153,8 @@ public class KeyguardFaceUnlockView extends LinearLayout implements KeyguardSecu if (mBiometricUnlock != null) { mBiometricUnlock.stop(); } - mLockPatternUtils.setCurrentUser(userId); + // No longer required; static value set by KeyguardViewMediator + // mLockPatternUtils.setCurrentUser(userId); } }; diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java index 1977b52..4003754 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardSelectorView.java @@ -23,6 +23,8 @@ import android.content.ActivityNotFoundException; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.os.RemoteException; import android.os.UserHandle; import android.provider.MediaStore; @@ -38,6 +40,8 @@ import com.android.internal.widget.multiwaveview.GlowPadView; import com.android.internal.widget.multiwaveview.GlowPadView.OnTriggerListener; import com.android.internal.R; +import java.util.List; + public class KeyguardSelectorView extends LinearLayout implements KeyguardSecurityView { private static final boolean DEBUG = KeyguardHostView.DEBUG; private static final String TAG = "SecuritySelectorView"; @@ -118,12 +122,39 @@ public class KeyguardSelectorView extends LinearLayout implements KeyguardSecuri this(context, null); } + private boolean wouldLaunchResolverActivity(Intent intent) { + PackageManager packageManager = mContext.getPackageManager(); + ResolveInfo resolved = packageManager.resolveActivityAsUser(intent, + PackageManager.MATCH_DEFAULT_ONLY, mLockPatternUtils.getCurrentUser()); + final List<ResolveInfo> appList = packageManager.queryIntentActivitiesAsUser( + intent, PackageManager.MATCH_DEFAULT_ONLY, mLockPatternUtils.getCurrentUser()); + // If the list contains the above resolved activity, then it can't be + // ResolverActivity itself. + for (int i = 0; i < appList.size(); i++) { + ResolveInfo tmp = appList.get(i); + if (tmp.activityInfo.name.equals(resolved.activityInfo.name) + && tmp.activityInfo.packageName.equals(resolved.activityInfo.packageName)) { + return false; + } + } + return true; + } + protected void launchCamera() { if (mLockPatternUtils.isSecure()) { // Launch the secure version of the camera - Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE); + final Intent intent = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE); intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - launchActivity(intent, true); + + if (wouldLaunchResolverActivity(intent)) { + // TODO: Show disambiguation dialog instead. + // For now, we'll treat this like launching any other app from secure keyguard. + // When they do, user sees the system's ResolverActivity which lets them choose + // which secure camera to use. + launchActivity(intent, false); + } else { + launchActivity(intent, true); + } } else { // Launch the normal camera launchActivity(new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA), false); diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java index 514ada6..59aed24 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java @@ -894,6 +894,8 @@ public class KeyguardViewMediator { /** * Update the newUserId. Call while holding WindowManagerService lock. + * NOTE: Should only be called by KeyguardViewMediator in response to the user id changing. + * * @param newUserId The id of the incoming user. */ public void setCurrentUser(int newUserId) { |
