我在一个简单的应用程序上工作,它应该能够访问文件从内部存储以及从外部存储(可移动卡),如微型SD卡(当用户插入SD卡)。
(不是设备附带的内置SD卡,我知道可以使用Environment.getExternalStorageDirectory()访问它)
是否可以找出用户是否已将SD卡插入设备?如果是,是否可以获取该SD卡的路径?
我发现硬编码路径不是一个好的选择,因为不同的设备对用户插入的sd卡有不同的路径。
任何帮助都是非常感谢的。谢谢。
发布于 2012-10-04 15:09:24
(不是设备附带的内置SD卡,我知道可以使用Environment.getExternalStorageDirectory()访问它)
Android将可移动存储介质(如SD卡)或内部(不可移动)存储仅视为外部存储。
以下是表单developer.android.com
每一个与安卓系统兼容的设备都支持一个共享的“外部存储器”,你可以用它来保存文件。这可以是可移动存储介质(如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
发布于 2012-10-04 15:00:26
尝试:
Boolean mSDcheck = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);发布于 2015-08-03 23:39:35
我将在这里向您展示最简单的解决方案。如果您想要显示是否插入了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();
}https://stackoverflow.com/questions/12721827
复制相似问题