首先这么问题大家可以在CSDN上找到n多博客,亲测80%用不了……
首先在6.0以后的危险权限需要动态获取。
所以申请要分为两个部分。
先在AndroidManifest中获取一次权限
之后,在MAinactivity的oncreate中调用以下函数。
@RequiresApi(api = Build.VERSION_CODES.M) void Request() { //获取相机拍摄读写权限 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//版本判断 if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA}, 1); } } } //一个权限没有,就一次申请所有所需的权限,这样可以在打开应用的时候获得所有权限
除外,相机的打开还需要三行代码。见下
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); builder.detectFileUriExposure(); //7.0拍照必加
over,效果图展示。