android Camera.open ()收到“的访问< package>已被限制”

7fhtutme  于 2023-02-02  发布在  Android
关注(0)|答案(2)|浏览(152)
  • 安装了Android 7.1.1的诺基亚6出现问题
  • 准许
  • AppOpsManager#checkOp(AppOpsManager.OPSTR_CAMERA, Process.myUid(), getPackageName())返回AppOpsManager#MODE_ALLOWED

然而,当尝试www.example.com(i)检查相机属性时,我得到Camera.open(i) for checking camera properties I get
I/摄像机维修:摄像头0:"包裹"访问已受限
显然,只有当应用程序的软件包或uId被显式限制启动AppOpsManager #OP_CAMERA时,才会发生这种情况[1]。但为什么会发生这种情况呢?
样本代码

for (int i = 0; i < numCameras; ++i) {
    List<Size> supportedSizes = null;
    List<int[]> supportedFpsRanges = null;
    Camera camera = null;
    try {
        camera = Camera.open(i);
        Parameters parameters = camera.getParameters();
        supportedSizes = parameters.getSupportedPreviewSizes();
        supportedFpsRanges = getFpsRangesRobust(parameters);
    } catch (Exception e) {
        ...
    } finally {
        if (camera != null) {
            camera.release();
        }
    }

[1]www.example.com https://github.com/aosp-mirror/platform_frameworks_base/blob/oreo-mr1-release/services/core/java/com/android/server/AppOpsService.java#L2588

t9aqgxwy

t9aqgxwy1#

显然是设备问题。诺基亚6/TA-1000,安卓7.1.1
设想方案

  • 尝试使用照相机
  • 应用程序请求权限,请点击拒绝
  • 尝试使用照相机
  • 应用程序请求权限,请点击允许
  • logcat中发布错误,摄像机无法工作

可与任何其他应用程序重现,包括默认相机应用程序。

0ejtzxu1

0ejtzxu12#

检查是否已将此行添加到应用清单。

android:foregroundServiceType="camera"

相关问题