未自动授予摄像头权限

未自动授予摄像头权限

问题描述:

我试图使用Camera.open() 访问摄像头但它会抛出异常未能连接到摄像头服务。未自动授予摄像头权限

我在设置 - >应用程序 - >我的应用程序 - >权限 - >相机检查摄像机权限,它没有被授予。 我已经在android清单中添加了相机权限。

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

为什么不在第一时间自动授予? 处理这个问题的最佳做法是什么?

+0

您需要在运行时请求权限。为此,你可以使用我的图书馆:https://github.com/nabinbhandari/Android-Permissions –

首先检查用户授予权限:

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

然后,你可以使用它来要求用户:

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

而在棉花糖,后来,它出现的对话框


在请求许可警报将显示要求权限包含允许和书房y选项。点击动作后,我们可以用下面的方法得到请求的结果。

@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采取了答案。

+1

这工作。谢谢 !!! –