使用相机的许可[重复]

Posted

技术标签:

【中文标题】使用相机的许可[重复]【英文标题】:Permission to use the camera [duplicate] 【发布时间】:2019-01-07 12:17:54 【问题描述】:

为什么应用程序在安装过程中不请求使用相机的权限?

清单:

<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" />

【问题讨论】:

发布您的清单 如果您的设备是 Marshmallow 及以上版本,则运行时权限适用 阅读this 【参考方案1】:

有两种类型的权限。

    普通权限(不需要用户询问) 危险的权限(需要询问)

在你的清单中有 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
    

提示

如果您不想编写太多代码来请求不同类的权限。使用一些图书馆。喜欢

https://github.com/tbruyelle/RxPermissions https://github.com/Karumi/Dexter

我使用 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

【讨论】:

【参考方案2】:

尝试添加这个:

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

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

【讨论】:

以上是关于使用相机的许可[重复]的主要内容,如果未能解决你的问题,请参考以下文章

magento 扩展的许可证密钥 [重复]

未经许可的地理定位[重复]

相机库问题[重复]

如何使用网络技术使用 iPhone 的相机 [重复]

为java项目生成许可证密钥[重复]

是否可以仅使用相机来测量物体与安卓手机的距离[重复]