从API级别8开始,Android似乎重新定义了"外部"存储.通过http://developer.android.com/reference/android/os/Environment.html阅读,附在文档中getExternalStorageDirectory我看到评论:"不要在这里混淆'外部'一词.这个目录可以更好被认为是媒体/共享存储......在具有多个"外部"存储目录的设备中......,该目录代表用户将与之交互的"主要"外部存储."
我的应用程序将文件写入获取的路径getExternalStorageDirectory,并且我已经让用户请求选择写入他们的可移动SD卡.我一直认为它getExternalStorageDirectory返回了可移动SD卡的路径,但这已不再适用.如何访问此SD卡的路径?
Ale*_*dam 33
根据消息来源,getExternalStorageDirectory实现返回设备环境中设置为"外部存储"的任何内容:
public static File getExternalStorageDirectory() {
return EXTERNAL_STORAGE_DIRECTORY;
}
Run Code Online (Sandbox Code Playgroud)
并EXTERNAL_STORAGE_DIRECTORY是:
private static final File EXTERNAL_STORAGE_DIRECTORY
= getDirectory("EXTERNAL_STORAGE", "/sdcard");
static File getDirectory(String variableName, String defaultPath) {
String path = System.getenv(variableName);
return path == null ? new File(defaultPath) : new File(path);
}
Run Code Online (Sandbox Code Playgroud)
相反,getExternalStoragePublicDirectory(String type)需要以下其中一个字符串:
DIRECTORY_MUSIC,DIRECTORY_PODCASTS,DIRECTORY_RINGTONES,DIRECTORY_ALARMS,DIRECTORY_NOTIFICATIONS,DIRECTORY_PICTURES,DIRECTORY_MOVIES,DIRECTORY_DOWNLOADS或DIRECTORY_DCIM.不能为空.
所以它并不意味着返回SD卡根.
最后,getExternalStorageState()将返回挂载的文件系统/mnt/sdcard/.根据CommonsWare在这个答案:找到外部SD卡位置,没有办法直接获取外部SD卡(如果它甚至存在).
另一种方法是检查isExternalStorageRemovable ()并提供手动选项,如果它是错误的.
| 归档时间: |
|
| 查看次数: |
45477 次 |
| 最近记录: |