我在尝试将文件写入外部 SD 卡时遇到问题android 4.0.3
,即使我已经使用了WRITE_EXTERNAL_STORAGE
&之类的写权限WRITE_MEDIA_STORAGE
,所以我找到了另一种方法来处理它,但现在我想知道我的应用程序是否是否可以写入可移动 SD 卡,如果没有,那么我想切换到内部 SD 卡。
所以现在的问题是我如何知道是否支持写入可移动 SD 卡,所以如果有人做过类似的实现,请随时在这里分享代码。
我在尝试将文件写入外部 SD 卡时遇到问题android 4.0.3
,即使我已经使用了WRITE_EXTERNAL_STORAGE
&之类的写权限WRITE_MEDIA_STORAGE
,所以我找到了另一种方法来处理它,但现在我想知道我的应用程序是否是否可以写入可移动 SD 卡,如果没有,那么我想切换到内部 SD 卡。
所以现在的问题是我如何知道是否支持写入可移动 SD 卡,所以如果有人做过类似的实现,请随时在这里分享代码。
直接从 API 指南回答:
http://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 卡的应用程序。我有 WRITE_EXTERNAL_STORAGE 权限,但没有别的。
处理外部SD卡的主要问题是找到路径,因为getExternalStorageDirectory()
通常返回内部的。/mnt
如果有帮助,它应该是 的子目录。
要查找是否可以写入 SD 卡,请查看该Environment
课程。
String externalStorageState = Environment.getExternalStorageState();
然后您可以使用检查此状态
Environment.MEDIA_MOUNTED(externalStorageState)
和/或Environment.MEDIA_MOUNTED_READ_ONLY
(外部存储状态)