如何检查SD卡是否已插入平板电脑:Android?
我正在开发一个简单的应用程序,它应该能够从内部存储器以及外部存储器(可移动卡)访问文件,如Micro SD卡(当用户插入SDCARD时)。
(不是设备附带的内部SD卡,我知道可以使用Environment.getExternalStorageDirectory()
访问它)
是否可以确定用户是否已将sdcard插入设备? 如果是,是否有可能获得SD卡的路径?
我发现硬编码路径不是一个好的选择,因为不同的设备有不同的用户插入的SD卡路径。
很感谢任何forms的帮助。 谢谢。
(不是设备附带的内部SD卡,我知道可以使用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卡的存在。
- 从PRAGMA table_info()获取名称和类型
- 在android中使用AES CTR模式随机访问InputStream
- Android-Java RSA解密
- Android中的文件权限
- Asynctask和doInBackground错误
- 在AsyncTask的情况下,在doInBackground()方法之前调用onPostExecute()
- android:使用自定义适配器在ListView中添加SearchView
- Gradle Build对于任务应用程序失败:processReleaseResources
- 尝试从我的android java应用程序调用web服务时android.os.NetworkOnMainThreadExceptionexception?