summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/camera/CameraIntents.kt25
-rw-r--r--packages/SystemUI/src/com/android/systemui/camera/CameraIntentsWrapper.kt14
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfig.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java2
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt4
7 files changed, 36 insertions, 30 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt b/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt
index 11c7a3196913..ecbd3f97f4e5 100644
--- a/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt
+++ b/packages/SystemUI/src/com/android/systemui/camera/CameraGestureHelper.kt
@@ -69,7 +69,7 @@ class CameraGestureHelper @Inject constructor(
}
val resolveInfo: ResolveInfo? = packageManager.resolveActivityAsUser(
- getStartCameraIntent(),
+ getStartCameraIntent(selectedUserInteractor.getSelectedUserId()),
PackageManager.MATCH_DEFAULT_ONLY,
selectedUserInteractor.getSelectedUserId()
)
@@ -85,7 +85,7 @@ class CameraGestureHelper @Inject constructor(
* @param source The source of the camera launch, to be passed to the camera app via [Intent]
*/
fun launchCamera(source: Int) {
- val intent: Intent = getStartCameraIntent()
+ val intent: Intent = getStartCameraIntent(selectedUserInteractor.getSelectedUserId())
intent.putExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, source)
val wouldLaunchResolverActivity = activityIntentHelper.wouldLaunchResolverActivity(
intent, selectedUserInteractor.getSelectedUserId()
@@ -143,13 +143,13 @@ class CameraGestureHelper @Inject constructor(
* Returns an [Intent] that can be used to start the camera app such that it occludes the
* lock-screen, if needed.
*/
- private fun getStartCameraIntent(): Intent {
+ private fun getStartCameraIntent(userId: Int): Intent {
val isLockScreenDismissible = keyguardStateController.canDismissLockScreen()
val isSecure = keyguardStateController.isMethodSecure
return if (isSecure && !isLockScreenDismissible) {
- cameraIntents.getSecureCameraIntent()
+ cameraIntents.getSecureCameraIntent(userId)
} else {
- cameraIntents.getInsecureCameraIntent()
+ cameraIntents.getInsecureCameraIntent(userId)
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/camera/CameraIntents.kt b/packages/SystemUI/src/com/android/systemui/camera/CameraIntents.kt
index 1e17059d20e4..11375862142c 100644
--- a/packages/SystemUI/src/com/android/systemui/camera/CameraIntents.kt
+++ b/packages/SystemUI/src/com/android/systemui/camera/CameraIntents.kt
@@ -18,9 +18,11 @@ package com.android.systemui.camera
import android.content.Context
import android.content.Intent
+import android.content.pm.PackageManager
import android.provider.MediaStore
import android.text.TextUtils
import com.android.systemui.res.R
+import android.util.Log
class CameraIntents {
companion object {
@@ -28,28 +30,33 @@ class CameraIntents {
val DEFAULT_INSECURE_CAMERA_INTENT_ACTION = MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA
private val VIDEO_CAMERA_INTENT_ACTION = MediaStore.INTENT_ACTION_VIDEO_CAMERA
const val EXTRA_LAUNCH_SOURCE = "com.android.systemui.camera_launch_source"
+ const val TAG = "CameraIntents"
@JvmStatic
- fun getOverrideCameraPackage(context: Context): String? {
- context.resources.getString(R.string.config_cameraGesturePackage)?.let {
- if (!TextUtils.isEmpty(it)) {
- return it
+ fun getOverrideCameraPackage(context: Context, userId: Int): String? {
+ val packageName = context.resources.getString(R.string.config_cameraGesturePackage)!!
+ try {
+ if (!TextUtils.isEmpty(packageName)
+ && context.packageManager.getApplicationInfoAsUser(packageName, 0, userId).enabled ?: false) {
+ return packageName
}
+ } catch (e: PackageManager.NameNotFoundException) {
+ Log.w(TAG, "Missing cameraGesturePackage $packageName", e)
}
return null
}
@JvmStatic
- fun getInsecureCameraIntent(context: Context): Intent {
+ fun getInsecureCameraIntent(context: Context, userId: Int): Intent {
val intent = Intent(DEFAULT_INSECURE_CAMERA_INTENT_ACTION)
- getOverrideCameraPackage(context)?.let { intent.setPackage(it) }
+ getOverrideCameraPackage(context, userId)?.let { intent.setPackage(it) }
return intent
}
@JvmStatic
- fun getSecureCameraIntent(context: Context): Intent {
+ fun getSecureCameraIntent(context: Context, userId: Int): Intent {
val intent = Intent(DEFAULT_SECURE_CAMERA_INTENT_ACTION)
- getOverrideCameraPackage(context)?.let { intent.setPackage(it) }
+ getOverrideCameraPackage(context, userId)?.let { intent.setPackage(it) }
return intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
}
@@ -65,7 +72,7 @@ class CameraIntents {
/** Returns an [Intent] that can be used to start the camera in video mode. */
@JvmStatic
- fun getVideoCameraIntent(): Intent {
+ fun getVideoCameraIntent(userId: Int): Intent {
return Intent(VIDEO_CAMERA_INTENT_ACTION)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/camera/CameraIntentsWrapper.kt b/packages/SystemUI/src/com/android/systemui/camera/CameraIntentsWrapper.kt
index a434617f2da7..b65c0d49fd96 100644
--- a/packages/SystemUI/src/com/android/systemui/camera/CameraIntentsWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/camera/CameraIntentsWrapper.kt
@@ -29,22 +29,22 @@ constructor(
/**
* Returns an [Intent] that can be used to start the camera, suitable for when the device is
- * already unlocked
+ * locked
*/
- fun getSecureCameraIntent(): Intent {
- return CameraIntents.getSecureCameraIntent(context)
+ fun getSecureCameraIntent(userId: Int): Intent {
+ return CameraIntents.getSecureCameraIntent(context, userId)
}
/**
* Returns an [Intent] that can be used to start the camera, suitable for when the device is not
* already unlocked
*/
- fun getInsecureCameraIntent(): Intent {
- return CameraIntents.getInsecureCameraIntent(context)
+ fun getInsecureCameraIntent(userId: Int): Intent {
+ return CameraIntents.getInsecureCameraIntent(context, userId)
}
/** Returns an [Intent] that can be used to start the camera in video mode. */
- fun getVideoCameraIntent(): Intent {
- return CameraIntents.getVideoCameraIntent()
+ fun getVideoCameraIntent(userId: Int): Intent {
+ return CameraIntents.getVideoCameraIntent(userId)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfig.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfig.kt
index bbdd90375ece..3e6e3b79a820 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfig.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/quickaffordance/VideoCameraQuickAffordanceConfig.kt
@@ -50,14 +50,13 @@ constructor(
@Background private val backgroundDispatcher: CoroutineDispatcher,
) : KeyguardQuickAffordanceConfig {
- private val intent: Intent by lazy {
- cameraIntents.getVideoCameraIntent().apply {
+ private val intent: Intent
+ get() = cameraIntents.getVideoCameraIntent(userTracker.userId).apply {
putExtra(
CameraIntents.EXTRA_LAUNCH_SOURCE,
StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE,
)
}
- }
override val key: String
get() = BuiltInKeyguardQuickAffordanceKeys.VIDEO_CAMERA
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java
index 60a4606ef0d0..1fcec662dcb1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java
@@ -347,7 +347,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba
}
if (!mKeyguardStateController.isShowing()) {
- final Intent cameraIntent = CameraIntents.getInsecureCameraIntent(mContext);
+ final Intent cameraIntent = CameraIntents.getInsecureCameraIntent(mContext, mUserTracker.getUserId());
cameraIntent.putExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, source);
mActivityStarter.startActivityDismissingKeyguard(cameraIntent,
false /* onlyProvisioned */, true /* dismissShade */,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
index 6e3aabf7c754..21052d72c1bc 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java
@@ -1800,10 +1800,10 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
}
pw.println("Camera gesture intents:");
- pw.println(" Insecure camera: " + CameraIntents.getInsecureCameraIntent(mContext));
- pw.println(" Secure camera: " + CameraIntents.getSecureCameraIntent(mContext));
+ pw.println(" Insecure camera: " + CameraIntents.getInsecureCameraIntent(mContext, mUserTracker.getUserId()));
+ pw.println(" Secure camera: " + CameraIntents.getSecureCameraIntent(mContext, mUserTracker.getUserId()));
pw.println(" Override package: "
- + CameraIntents.getOverrideCameraPackage(mContext));
+ + CameraIntents.getOverrideCameraPackage(mContext, mUserTracker.getUserId()));
}
private void createAndAddWindows(@Nullable RegisterStatusBarResult result) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
index 6d3cc4c536f1..669795bc91a8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt
@@ -81,10 +81,10 @@ class CameraGestureHelperTest : SysuiTestCase() {
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
- whenever(cameraIntents.getSecureCameraIntent()).thenReturn(
+ whenever(cameraIntents.getSecureCameraIntent(anyInt())).thenReturn(
Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION)
)
- whenever(cameraIntents.getInsecureCameraIntent()).thenReturn(
+ whenever(cameraIntents.getInsecureCameraIntent(anyInt())).thenReturn(
Intent(CameraIntents.DEFAULT_INSECURE_CAMERA_INTENT_ACTION)
)