使用相机的许可[重复]
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 权限。
【讨论】:
以上是关于使用相机的许可[重复]的主要内容,如果未能解决你的问题,请参考以下文章