问题描述:
Android开发,在访问文件夹创建文件的时候,报错IOException: No such file or directory ,代码本身没有问题。
注册权限
找了一会儿,突然间想起来这是一个访问内存,需要权限,在AndroidManifest中进行注册:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
动态申请权限
动态申请权限,可以在一开始进入程序的时候就全部申请,也可以在用到这个功能的时候再向用户申请,因为我用的很早,所以在一开始进入的时候就申请了,需要加入如下代码:
String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
List<String> mPermissionList = new ArrayList<>();
private static final int PERMISSION_REQUEST = 1;
private void checkPermission() {
mPermissionList.clear();
for (int i = 0; i < permissions.length; i++) {
if (ContextCompat.checkSelfPermission(this, permissions[i]) != PackageManager.PERMISSION_GRANTED) {
mPermissionList.add(permissions[i]);
}
}
if (mPermissionList.isEmpty()) {
} else {
String[] permissions = mPermissionList.toArray(new String[mPermissionList.size()]);
ActivityCompat.requestPermissions(MainActivity.this, permissions, PERMISSION_REQUEST);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case PERMISSION_REQUEST:
break;
default:
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
break;
}
}
同时在onCreate中触发检查权限的方法;加入checkPermission()方法
总结:
- 是否在AndroidManifest中注册了权限
- 若是注册了权限且开发环境大于23,是否进行了动态申请权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)