这两天在开发一个android app,用途是从手机里读写txt文件。
读的时候一直报错:open failed: EACCES (Permission denied)
所以就在想哪里出了问题,各种查找,先在manifest添加:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
后来在manifest的application里添加:
<application
android:requestLegacyExternalStorage="true"
后来在activity里添加权限许可:
if (Build.VERSION.SDK_INT > 22) {
List<String> permissionList = new ArrayList<>();
// 检查权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
permissionList.add(Manifest.permission.READ_EXTERNAL_STORAGE);
}
// 检查其他权限并将其添加到permissionList中
if (!permissionList.isEmpty()) {
// 请求权限
String[] permissions = permissionList.toArray(new String[0]);
ActivityCompat.requestPermissions(this, permissions, 1);
} else {
// 权限已经被授予,可以开始
//do something;
}
}
这个代码是添加读的权限许可,如有其他权限可以继续添加。
这样的话点开app,就会提示是否允许X权限了,点击允许就可以啦。