最近做一个项目,需要用的手机摄像头来扫描微信、支付宝等付款码;但是遇到一个问题;
在Android5.1系统上调用摄像头扫码没有任何问题,打开摄像头也提示让打开权限,如下图所示;
但是在Android8.xx机器上测试就发现调用扫码黑屏,也不提示打开权限配置的对话框;
原因是Android6.0时相机摄像头权限改成了动态权限申请。实际上在xml中加入CAMERA,WRITE_EXTERNAL_STORAGE全向后,直接调用摄像头。此时是没有“检查权限是否授予”,“没有授予再申请权限”的代码的。所以没有打开权限配置的对话框;
需要如下设置:
在清单文件配置权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
代码中设置:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CameraManager.init(getApplication());
requestPermission();
}
/*
* 校验摄像头权限
*/
private void requestPermission() {
if (Build.VERSION.SDK_INT >= 23) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
}
再运行程序,发现已经提示打开权限对话框了,问题解决;
注:如有问题可以回复,看到第一时间分析解决,码农不易,感觉对您有用,帮助到您,可否打赏一杯可乐,在此谢过诸位,愿诸君终成大神,前程似锦~~~