关于手机的内置SD卡与外置SD卡

Posted xxNote

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于手机的内置SD卡与外置SD卡相关的知识,希望对你有一定的参考价值。

对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Environment.isExternalStorageRemovable()来判断如果返回true就是外置的,因为外置的才能卸载。(但是我目前只遇到过安卓4.4系统才有内置SD卡,所以Environment.getExternalStorageDirectory()在2.3系统上当外置的用吧,遇到特殊机型再考虑其它办法

对于安卓4.0及以上的系统来说就好办了,可以利用反射来实现区分内外置SD卡,代码如下:

 

1 StorageManager storageManager = (StorageManager) getSystemService(Context.STORAGE_SERVICE);
2         try {
3             String [] strings = (String[]) storageManager.getClass().getMethod("getVolumePaths").invoke(storageManager);
4             for (int i = 0; i < strings.length; i++) {
5                 System.out.println(strings[i]);
6             }
7         } catch (Exception e) {
8             e.printStackTrace();
9         }

 

然后再调用:

1 Environment.getExternalStorageDirectory();//获取一个SD卡路径
2 Environment.isExternalStorageRemovable();//判断SD卡是不是可卸载的

接下来将Environment.getExternalStorageDirectory()..toString()获得的字符串与strings[i]里面的做比较,即可区分哪个是内置哪个是外置的了。

 

 

 

以上是关于关于手机的内置SD卡与外置SD卡的主要内容,如果未能解决你的问题,请参考以下文章

安卓手机外置sd卡的权限怎么打开?

如何区分手机内置存储卡与外置存储卡

android获取内置和外置SD卡路径 - z

java 写到tf卡

Android 内部存储/外部存储 及 读写权限

安卓手机如何读取外置sd卡