为什么在安装过程中应用程序不要求许可使用摄像机?
清单:
<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" />
答案 0 :(得分: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
}
}
提示:
如果您不想在不同的类中为请求权限编写太多代码。使用一些库。像
我使用 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权限。