最近在开发手机图片上传的功能时,使用的华为mate8手机进行测试,总会是出现读取不了资源或者写不了资源的错误,如下:
java.io.FileNotFoundException: /storage/emulated/0/Pictures/Screenshots/Screenshot_2016-08-17-11-46-53.png: open failed: EACCES (Permission denied)
在清单文件里添加了关于文件的读写权限,依旧是返回null,好无奈的赶脚。最终换了台小米5测试,发现没有出现这个错误。然后看了下系统,才想起来我的那台华为mate8是Android 6.0 的。MD,浪费了好多时间,最终找了关于6.0的运行时权限看了下,解决了问题,在此记录下,以免再犯。
在你需要的地方去检测权限,代码如下:
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE };
/** * Android 运行时权限 */
private void checkPermission() {
int permission = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions( this,PERMISSIONS_STORAGE,//需要请求的所有权限,这是个数组String[]
REQUEST_EXTERNAL_STORAGE//请求码
); }}
网友评论