如何在Android中获得相机的许可.(特别是Marshmallow)

Toy*_*yas 27 camera android

嘿我正在android studio中设计一个应用程序.我需要相机的许可.我已经包含<uses-permission android:name="android.permission.CAMERA" /> 在AndroidManifest.xml文件中.它在除Marshmallow之外的所有Android版本中都能正常工作.如何默认获得相机权限?如果不可能,我该如何向用户询问?

小智 50

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

if (ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
    == PackageManager.PERMISSION_DENIED)
Run Code Online (Sandbox Code Playgroud)

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

ActivityCompat.requestPermissions(activity, new String[] {Manifest.permission.CAMERA}, requestCode);
Run Code Online (Sandbox Code Playgroud)

在Marshmallow中,它将出现在对话框中

  • 在`Manifest.permission.CAMERA`中,我收到了`CAMERA`的红色文字 (5认同)
  • 使用android.Manifest.permission.CAMERA (5认同)

Sat*_* VG 34

您可以尝试以下代码来请求棉花糖中的相机权限.

首先检查用户是否授予权限.如果用户未授予权限,则请求相机权限.

private static final int MY_CAMERA_REQUEST_CODE = 100;

if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_CAMERA_REQUEST_CODE);
}
Run Code Online (Sandbox Code Playgroud)

在请求权限警报后,将显示询问权限包含允许和拒绝选项.单击操作后,我们可以使用以下方法获取请求的结果.

@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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 6

这对我有用,来源在这里

int MY_PERMISSIONS_REQUEST_CAMERA=0;
// Here, this is the current activity
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
     if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA))
     {

     }
     else
     {
          ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_CAMERA );
          // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
          // app-defined int constant. The callback method gets the
          // result of the request.
      }
}
Run Code Online (Sandbox Code Playgroud)