java.io.filenotfoundexception: /data/xxx.jpg: open failed: eacces (permission denied)
一、老生常谈的权限和Java请求权限以及AndroidMainfest
———————————————————————————
1、权限
———————————————————————————
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
其实这里还得在Android虚拟机把app的storage权限打开,
setting—>apps—>app(项目名字)—>permissions,然后打开即可,不过有意思的是,好像低版本的才找得到这个,高版本得没得找,我在高版本(AVD 31)上试过,截图里的是AVD 23
———————————————————————————
2、Java请求权限
———————————————————————————
在报错的方法前面调用即可,
// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE };
/**
* Checks if the app has permission to write to device storage
*
* If the app does not has permission then the user will be prompted to
* grant permissions
*
* @param activity
*/
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE);
}
}
———————————————————————————
3、AndroidMainfest
———————————————————————————
android:requestLegacyExternalStorage="true"
二、不细心很容易出现相同错误,但跟着大佬的方法做了大家都说666,唯独自己这表示无效
错误和别人是一样的。。。
-
其实是自己疏忽大意了。。。,就因为画红线的地方不一样,瞎折腾三天,真实情况是基础烂得出奇,这么简单的事搞得费劲,让人捉急啊,好好听课。。。。。。
-
如果大佬的方法试过了,网上都找遍了还是没解决,那么你是时候该想想自己是不是敲错了。。。