分享

open failed: EACCES (Permission denied)

 岁月如风99 2016-07-02
在开发安卓应用时,通过需要访问SDCARD、外部存储器。

当遇到

open failed: EACCES (Permission denied)

这个错误时,通常是由于以下几种原因导致的,解决方法如下:

1. AndroidManifest.xml文件中未定义以下权限:
解决方法是添加以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. 在调试的设备或模拟器中,App访问Storage的权限是关闭的:
解决方法是:
在设置->应用->找到并点击你的应用->权限->看到“存储”或“Storage”这一项了吧,把它打开即可。

3. 从API 23开始,还需要通过代码申请权限:

// Storage Permissions
private static final int REQUEST_EXTERNAL_STORAGE = 1;
private static String[] PERMISSIONS_STORAGE = {
android.Manifest.permission.READ_EXTERNAL_STORAGE,
android.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(android.app.Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.WRITE_EXTERNAL_STORAGE);

if (permission != android.content.pm.PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多