允许使用相机

时间:2018-07-31 07:24:17

标签: java android

为什么在安装过程中应用程序不要求许可使用摄像机?

清单:

<uses-feature android:name="android.hardware.camera"
    android:required="true"/>

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

2 个答案:

答案 0 :(得分:1)

  

有两种类型的权限。

     
      
  1. 普通权限(无需询问用户)
  2.   
  3. 危险权限(需要询问)
  4.   

您表示有 3个危险许可

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

请参见normal & dangerous permission in Android documentation.

您必须输入代码以获取权限。

询问权限

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

处理结果

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case 1: {

          // If request is cancelled, the result arrays are empty.
          if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.          
            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
                Toast.makeText(MainActivity.this, "Permission denied", Toast.LENGTH_SHORT).show();
            }
            return;
        }

        // other 'case' lines to check for other
        // permissions this app might request
    }
}

提示

如果您不想在不同的类中为请求权限编写太多代码。使用一些库。像

我使用 RxPermissions 。提供简单的功能。

rxPermissions
    .request(Manifest.permission.CAMERA)
    .subscribe(granted -> {
        if (granted) { // Always true pre-M
           // I can control the camera now
        } else {
           // Oups permission denied
        }
    });

请参见configuration for RxPermission

更多信息:https://developer.android.com/training/permissions/requesting.html

答案 1 :(得分:0)

尝试同时添加此内容:

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

如果您的应用程序使用GPS位置信息标记图像,则必须请求ACCESS_FINE_LOCATION权限。