关于手机的内置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]里面的做比较,即可区分哪个是内置哪个是外置的了。

时间: 2024-10-07 07:30:57

关于手机的内置SD卡与外置SD卡的相关文章

Android获取机身存储、内置SD卡与外置TF卡路径

获取机身存储路径(可以通过openFileInput,openFileOutput进行操作) String path=Environment.getDataDirectory().getAbsolutePath();返回/data 获取内置SD卡路径: public String getStorageDir(){ if(!(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))){ return "&quo

手机QQ内置浏览器position:fixed 属性支持不好的解决方案

在三星android 手机QQ内部打开连接时,有的手机QQ版本低时,会对position:fixed 支持不好. 表现在position:fixed 后 再用margin:0 atuo; 居中时,页面不居中: 可以这样解决:在外层再套一个div层.将position:fixed 属性放在外层然后定宽: 里面的层width:100%,margin:0 auto; 就可以完美支持低版本手机QQ position:fixed 后margin:0 auto; 不居中的问题.

安卓手机的加密设备和加密外置SD卡

手机一旦被偷或者遗失,那么隐私就会泄露了,安卓手机中有"加密设备"和"加密外置sd卡"的功能.那么这两项功能有什么用有什么区别呢? 加密设备 加密设备后,内置SD卡上的数据就全部被加密了,这部分主要用来保护通讯录及短信隐私.加密设备后,刷机恢复出厂设置都无法解密数据. 加密外置SD卡 加密外置SD卡可保护SD卡上的所有数据,这部分数据主要用来保护用户的一些图片.隐私文件,可防止艳照门.加密后的SD卡,如果没有解密,即使取出都是无法读取卡内内容的,同样,刷机.恢复出厂

Android64位机器内置带有32位so库的应用报错

现象是: 在64位手机中内置带有32位so库的应用,提示so库找不到.在/system/lib下报错.在/system/lib64下依旧报错.正常运行没问题. 解决办法是: 把apk放到/system/app/应用名/iReader.apk 把so库移到/system/app/应用名/lib/arm/

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

本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) [html] view plain copy <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 获取路径代码(MainActivity.java文件) [java] view plain copy pa

android 不打开Shared sdcard功能,内置SD卡中预制资源,删除资源,恢复出厂设置恢复

当有内置SD卡,且不打开shared sdcard功能的情况下,需要在SD卡中预置一些客户资源. 这些资源end user可见,也可删除.在资源被user删除之后,执行恢复出厂设置功能,需要恢复这些预置资源. 1. 预置同样的资源到user不可见的分区,如/system下. 在alps\vendor\mediatek\project_name\artifacts\out\target\product\your_project_name\system\ 下创建目录, 将预制资源放于此目录下,重新b

【转并修改】VS2013 MVC Web项目使用内置的IISExpress支持局域网内部机器(手机、PC)访问、调试

转:http://www.cnblogs.com/ShaYeBlog/p/4072074.html VS2013内置了IISExpress.做asp.net MVC的web项目开发时,Ctrl+F5和F5启动项目运行(后者是调试模式)的同时都会打开IISExpress,事实上本机对该web项目走的就是这个内置的server.默认情况下,该server运行的web项目不支持局域网内其他机器的访问.为了做到这一点: 1.关闭防火墙. 2.修改C:\Users\Administrator\Docume

进阶篇-安卓系统:3.初识安卓手机内置传感器

在第二代智能手机问世之后,安卓手机中的传感器就变得越来越多了. 这次笔记就认识一下安卓内置传感器的种类吧. 如果想要获取安卓手机中所有的内置传感器的名字: import android.hardware.Sensor; import android.hardware.SensorManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import java.util.List; pub

Android手机外置SD卡(TF卡)的获取方法

Android手机上的外置SD卡,起初的时候,即在Android出世的前几年,那时手机的存储是十分有限的,不像现在到处可见16G.32G和64G的存储,因而那时候的手机有的厂商允许插入外置的SD卡,此时这张卡仍处于手机的扩展部分.后来,随着手机的发展以及存储能力的增加,这张外置SD卡,逐渐成为了手机的一部分,不再允许可挺拔了,当然现在依然有的手机允许对存储进行拓展,比如三星等. 那张拓展的存储卡,现在叫做TF卡,且不是所有的手机都支持它,但是有时候有些奇葩需求偏要优先存储在TF卡里面,这叫不得不