Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 781c29c9 authored by Jorim Jaggi's avatar Jorim Jaggi
Browse files

Show bouncer if secure camera would show chooser.

Bug: 16570873
Change-Id: I2a86fb3a823d5255c0c35a78c1832c273e3a1578
parent ab1e9bdd
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityManager;
import android.widget.FrameLayout;
import android.widget.ImageView;

import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
@@ -72,6 +71,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    private UnlockMethodCache mUnlockMethodCache;
    private LockPatternUtils mLockPatternUtils;
    private FlashlightController mFlashlightController;
    private PreviewInflater mPreviewInflater;

    public KeyguardBottomAreaView(Context context) {
        super(context);
@@ -108,6 +108,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
        updateTrust();
        setClipChildren(false);
        setClipToPadding(false);
        mPreviewInflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
        inflatePreviews();
    }

@@ -208,7 +209,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    public void launchCamera() {
        mFlashlightController.killFlashlight();
        Intent intent = getCameraIntent();
        if (intent == SECURE_CAMERA_INTENT) {
        if (intent == SECURE_CAMERA_INTENT &&
                !mPreviewInflater.wouldLaunchResolverActivity(intent)) {
            mContext.startActivityAsUser(intent, UserHandle.CURRENT);
        } else {
            mActivityStarter.startActivity(intent);
@@ -277,9 +279,8 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    }

    private void inflatePreviews() {
        PreviewInflater inflater = new PreviewInflater(mContext, new LockPatternUtils(mContext));
        mPhonePreview = inflater.inflatePreview(PHONE_INTENT);
        mCameraPreview = inflater.inflatePreview(getCameraIntent());
        mPhonePreview = mPreviewInflater.inflatePreview(PHONE_INTENT);
        mCameraPreview = mPreviewInflater.inflatePreview(getCameraIntent());
        if (mPhonePreview != null) {
            mPreviewContainer.addView(mPhonePreview);
            mPhonePreview.setVisibility(View.INVISIBLE);
+13 −0
Original line number Diff line number Diff line
@@ -107,6 +107,19 @@ public class PreviewInflater {
        return info;
    }

    public boolean wouldLaunchResolverActivity(Intent intent) {
        PackageManager packageManager = mContext.getPackageManager();
        final List<ResolveInfo> appList = packageManager.queryIntentActivitiesAsUser(
                intent, PackageManager.MATCH_DEFAULT_ONLY, mLockPatternUtils.getCurrentUser());
        if (appList.size() == 0) {
            return false;
        }
        ResolveInfo resolved = packageManager.resolveActivityAsUser(intent,
                PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_META_DATA,
                mLockPatternUtils.getCurrentUser());
        return wouldLaunchResolverActivity(resolved, appList);
    }

    private boolean wouldLaunchResolverActivity(ResolveInfo resolved, List<ResolveInfo> appList) {
        // If the list contains the above resolved activity, then it can't be
        // ResolverActivity itself.