getExternalFilesdir失败
OnActivityCreated我在做:
activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
在logcat中,我得到:
com.package W/ContextImpl﹕ Failed to ensure directory: /storage/sdcard1/Android/data/com.package/files/Pictures
这只发生在LOLLIPOP(MOTO G 2014)上,并且在KITKAT(Nexus 4)上一切正常。 我已经清单WRITE_EXTERNAL_STORAGE 。 我在这里错过了什么? 存储通过文件浏览应用程序(如ES Explorer)安装并可访问。
编辑:令人惊讶的是,即使我收到上面报告的警告,该目录下的文件正确创建。
尝试这个 :
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
并使用此权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
其实:
getExternalFilesDir()
它将SD卡上的/Android/data/com.package/files/Pictures
文件夹路径返回到该文件夹。 里面没有名为Pictures
文件夹。 所以你得到这个错误。
我只在一台设备上遇到类似的问题。 Android版本是5.1.1(api 22)我在清单中发现的权限被添加如下。
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>
我删除了maxSdkVersion限制,然后问题就解决了。
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
我之前添加了maxSdkVersion,因为在某些地方我读取了API 18或更旧版本所需的权限,但似乎并非如此。 它依设备而异。
如果您的清单中有相同的权限设置,这可能会对您有所帮助。
如果您正在为Android 2.1或之后的版本开发,请使用
getExternalFilesDir(String type)
仔细阅读https://developer.android.com/guide/topics/data/data-storage.html#filesExternal
此外,你需要使用这种方法或类似的东西
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
// We can read and write the media
mExternalStorageAvailable = mExternalStorageWriteable = true;
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
// We can only read the media
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
} else {
// Something else is wrong. It may be one of many other states, but all we need
// to know is we can neither read nor write
mExternalStorageAvailable = mExternalStorageWriteable = false;
}
然后检查你是否可以访问SD卡。 如上所述,阅读官方文档。
您必须从SD卡进入目录(一个File对象)并设置您的特定文件路径,例如:
Environment.getExternalStorageDirectory(Environment.DIRECTORY_PICTURES);
还需要在清单文件中给予权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
链接地址: http://www.djcxy.com/p/28015.html