【问题标题】:Camera permission not automatically granted未自动授予相机权限
【发布时间】:2017-11-18 00:45:02
【问题描述】:

我尝试使用 Camera.open() 访问相机 但它会抛出异常无法连接到相机服务。

我在 Settings->Apps->MyApp->Permission->Camera 中检查了相机权限,但没有被授予。 我已经在 android manifest 中添加了摄像头权限。

<uses-permission android:name="android.permission.CAMERA"/>
    <uses-feature android:name="android.hardware.camera2" android:required="true"/>

为什么第一次没有自动授予? 处理此问题的最佳做法是什么?

【问题讨论】:

标签: android camera


【解决方案1】:

首先检查用户是否授予权限:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
    == PackageManager.PERMISSION_DENIED)

然后,您可以使用它向用户请求:

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

在棉花糖及更高版本中,它会出现对话框


请求权限后会显示提示,询​​问权限包含允许和拒绝选项。点击action后,我们可以通过以下方法获取请求的结果。

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);

    if (requestCode == MY_CAMERA_REQUEST_CODE) {
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            Toast.makeText(this, "camera permission granted", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this, "camera permission denied", Toast.LENGTH_LONG).show();
        }
    }
}

如果你不相信我,我已经从here那里得到了答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-24
    • 2016-03-08
    • 1970-01-01
    相关资源
    最近更新 更多