我正在开发一个简单的应用程序,它应该能够从内部存储和外部存储(可移动卡)访问文件,如 Micro SD 卡(当用户插入 SDCARD 时)。
(不是设备自带的内部sdcard,我知道可以使用访问
Environment.getExternalStorageDirectory())
是否可以查明用户是否在设备中插入了 SD 卡?如果是,是否可以获得该 SD 卡的路径?
我发现硬编码路径不是一个好的选择,因为不同的设备对用户插入的 sdcard 有不同的路径。
很感谢任何形式的帮助。谢谢你。
我正在开发一个简单的应用程序,它应该能够从内部存储和外部存储(可移动卡)访问文件,如 Micro SD 卡(当用户插入 SDCARD 时)。
(不是设备自带的内部sdcard,我知道可以使用访问
Environment.getExternalStorageDirectory())
是否可以查明用户是否在设备中插入了 SD 卡?如果是,是否可以获得该 SD 卡的路径?
我发现硬编码路径不是一个好的选择,因为不同的设备对用户插入的 sdcard 有不同的路径。
很感谢任何形式的帮助。谢谢你。
(不是设备附带的内部 sdcard,我知道可以使用 Environment.getExternalStorageDirectory() 访问它)
Android 仅将可移动存储介质(例如 SD 卡)或内部(不可移动)存储视为外部存储。
以下是表格 developer.android.com
每个与 Android 兼容的设备都支持一个共享的“外部存储”,您可以使用它来保存文件。这可以是可移动存储介质(例如 SD 卡)或内部(不可移动)存储。保存到外部存储的文件是世界可读的,并且可以由用户在启用 USB 大容量存储以传输计算机上的文件时进行修改。
要检查 SDCard 可用性,您可以使用以下代码。
private boolean isExternalStorageAvailable() {
String state = Environment.getExternalStorageState();
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
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;
}
if (mExternalStorageAvailable == true
&& mExternalStorageWriteable == true) {
return true;
} else {
return false;
}
}
请阅读http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
尝试:
Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);
我将在这里向您展示最简单的解决方案。如果要显示是否插入了sdcard,则只需尝试查找外部sdcard路径的文件,代码在这里:
File file = new File("/mnt/extSdCard");
try
{
File list[] = file.listFiles();
Toast.makeText(getApplicationContext(), "Yes sdcard is mounted, file count "+list.length, Toast.LENGTH_LONG).show();
}
catch(NullPointerException o)
{
Toast.makeText(getApplicationContext(), "Sorry no sdcard is mounted:", Toast.LENGTH_LONG).show();
}
“外部存储”不一定是 SD 卡,但可以安装内部存储器。许多带有 SD 卡的新时代 Android 设备上的方法getExternalStorageState()检查内部存储器而不是 SD 卡。更简单的选择是在 Context 类中使用getExternalMediaDirs() 方法。它返回具有绝对路径的文件数组,可用于检测 SD 卡的存在。