gpt4 book ai didi

java - 如何设置CAMERA权限才能通过常规测试?

转载 作者:行者123 更新时间:2023-12-01 09:48:35 30 4
gpt4 key购买 nike

这是一个非常奇怪的情况。我正在使用 camera2 API,有一个常规方法可以打开相机。

manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);

这个方法需要进行测试,这个

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=
PackageManager.
return;
}

通过简单的测试即可推断 list 中是否声明了 CAMERA 权限。

<uses-permission android:name="android.permission.CAMERA" />

我的 list 文件中有此权限,如果我将此应用程序上传到三星S5,它可以正常工作,没有问题,但如果我将此应用程序上传到中国设备,则会发生错误。没有通过测试,最终不打开相机...

也许我应该动态设置权限?

还有一件事,我尝试调用方法在测试中打开相机,这样

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) !=
PackageManager.
manager.openCamera(mCameraId, mStateCallback, mBackgroundHandler);
return;
}

但是犯了这个错误

FATAL EXCEPTION: main Process: com.example.android.camera2basic, PID: 29649 Theme: themes:{} java.lang.SecurityException: Lacking privileges to access camera service at android.hardware.camera2.utils.CameraBinderDecorator.throwOnError(CameraBinderDecorator.java:108) at android.hardware.camera2.legacy.CameraDeviceUserShim.connectBinderShim(CameraDeviceUserShim.java:336) at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:327) at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:457) at com.example.android.camera2basic.activities.CameraActivity.openCamera(CameraActivity.java:919)

我做错了什么?

最佳答案

API 级别 23+ 上,您需要在运行时请求权限(即使您已在 list 中声明了这些权限)。

你应该这样做:

ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
CAMERA_REQUEST);

要处理结果,您需要在 Activity 中重写 onRequestPermissionsResult():

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == CAMERA_REQUEST) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission granted
// you can do your Camera related stuff
} else {
// permission denied
}
}

// ...
}

查看 documentation关于运行时权限。

关于java - 如何设置CAMERA权限才能通过常规测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37789093/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com