(转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置
转:http://blog.csdn.net/zhandoushi1982/article/details/8560233
获取android文件系统的信息,需要Environment类和StatFs类的支持。
(1)Environment 是一个提供访问环境变量的类,常用的方法有:
A,getRootDirectory() ,返回File,获取Android 的根目录。
B,getDataDirectory() ,返回File ,获取Android 数据目录(小米手机叫机身存储)
C,getExternalStorageDirectory() ,返回File ,获取外部存储目录即SDCard(小米手机叫存储卡)。
D,getExternalStorageState() ,返回String,获取外部存储设备的当前状态字串。
E,getDownloadCacheDirectory(),返回File ,获取Android 下载/缓存内容目录。
常用的字串变量,以getExternalStorageState返回值为例:
A,MEDIA_BAD_REMOVAL,表明SDCard 被卸载前己被移除。
B,MEDIA_CHECKING,表明对象正在磁盘检查。
C,MEDIA_MOUNTED,表明对象存在并具有读/写权限。
D,MEDIA_MOUNTED_READ_ONLY,表明对象权限为只读。
E,MEDIA_NOFS,表明对象为空白或正在使用不受支持的文件系统。
F,MEDIA_REMOVED,不存在SDCard。
G,MEDIA_SHARED,表明存储媒体正在通过USB共享,比如手机通过数据线连接到手机后就是这种状态,此时APP不能获取到存储媒体上的数据。
H,MEDIA_UNMOUNTABLE,表明存储媒体无法挂载。
I, MEDIA_UNMOUNTED,表明存储媒体没有挂载。
(2)StatFs类,一个模拟linux的df命令的类,成员函数是获得底层Linux文件系统的属性函数。StatFs 常用方法:
A,getAvailableBlocks(),返回Int,获取当前系统可用存储空间的Block数。
B,getBlockCount(),返回Int,获取当前系统存储空间总的Block数。
C,getBlockSize(),返回Int ,获取当前系统Block占的大小,以字节为单位
D,getFreeBlocks(),返回Int ,该块区域剩余的空间(包括可用空间和保留空间)。
(3)一个获取系统和SD卡可用容量及总总量的实例,如下:
从LOG输出数据即可,以M为单位。
(4)需要注意的是,访问存储器文件系统,也需要在XML中添加权限,如下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
有些应用能安装到SD卡上,有些不能,这其中有一定规则。如何判断?
Google 默认 PackageManager 管理安装包的机制如下:在 AdroidManifest.xml 里面定义安装位置可以有四种情况:
1. 如果没有定义安装位置,表示安装在手机内存上;
2. android:installLocation = "auto",表示先查看手机内存是否足够,如果够就安装在手机内存上,不够就安装在 T 卡上;
3. android:installLocation = "internalOnly",表示安装在手机内存上;
4. android:installLocation = "preferExternal" ,表示安装在 T 卡上;
如果 apk 的 AndroidManifest.xml 里面定义 android:installLocation = "internalOnly",那么无论用户选择安装在什么地方,该apk 都会安装到手机上,这样做的好处是避免程序运行错误,因为定义android:installLocation = "internalOnly" 的 apk 一般要安装到手机内存上才能正常运行。
(转)获取android手机内部存储空间和外部存储空间的参数 && 如何决定一个apk的安装位置的更多相关文章
- 获取Android 手机屏幕宽度和高度以及获取Android手机序列号
1.获取Android 手机屏幕宽度 1 DisplayMetrics dm = new DisplayMetrics(); 2 this.getWindowManager().getDefaultD ...
- 关于Android的Build类——获取Android手机设备各种信息
经常遇到要获取Android手机设备的相关信息,来进行业务的开发,比如经常会遇到要获取CPU的类型来进行so库的动态的下载.而这些都是在Android的Build类里面.相关信息如下: private ...
- Pyqt adb 获取Android手机屏幕
adb的全称为Android Debug Bridge,就是起到调试桥的作用.adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会da ...
- 获取android手机基本信息
/** * 获取android当前可用内存大小 */ private String getAvailMemory() {// 获取android当前可用内存大小 ActivityManager am ...
- 如何获取Android手机的唯一标识
有很多场景和需求你需要用到手机设备的唯一标识符. 在Android中,有以下几种方法获取这样的ID. 1. The IMEI: 仅仅只对Android手机有效: 1 2 TelephonyManage ...
- 通过ADB获取Android手机信息
原文:https://blog.csdn.net/fasfaf454/article/details/51438743 1.获取手机系统信息( CPU,厂商名称等)adb shell "ca ...
- 【Android】Android apk默认安装位置设置
在Android工程中,设置apk的默认安装位置 在AndroidManifest.xml文件Manifest标签中添加android:installLocation属性 android:instal ...
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储? - z
这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的目录.用的是 Environment.getExternalStorageDirectory() 这个方法,然后在获取的 ...
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?
这几天在做Android应用的远程更新功能,将下载的更新包放在移动设备上指定的文件夹. 用的是 Environment.getExternalStorageDirectory() 这种方法.然后在获 ...
随机推荐
- Intellij IDEA gradle项目目录介绍
Gradle简介 Java的构建,经历了从Ant-->Maven->Gradle的过程,每一次的进步,都是为了解决之前的工具带来的问题: Ant:Ant的功能虽然强大,但过于灵活,规范性不 ...
- 沉默的QQ
QQ很久没有叮咚了,一是没人发消息给我,二是我关了QQ的声音.现在除了几个还在接收消息的群外,其他的群都屏蔽了,有事才上去看看.我从来就没写过QQ空间,那些以前经常写空间的朋友也多数停止了喧闹.每次登 ...
- Python with语句的概率,不多说了直接上代码!
python中的with语句用于访问资源.它确保执行指定的__exit__(“清理”)操作,而不管释放被访问资源的处理过程中的错误或异常,例如读取和写入文件后自动关闭.线程中锁的自动获取和释放等. p ...
- mui框架开发aop的跨页面传值
mui开发跨平台app,其实不乏会涉及到跨页面传值,今天给大家简单介绍一种常用也是简单的传值方法 咱在这里设置一个场景,就是两个页面进入到同一页面展示不同的元素,此时需要在这两个页面各自设置一个区别的 ...
- Unity 调用android
{ https://www.bilibili.com/video/av49002527 }
- Feign远程调用源码阅读
- NX11.0和VS2013 创建NXOpen 开发模版失败解决方案【转载】
转载自PLM之家论坛 NX11.0和VS2013 创建NXOpen 开发模版失败解决方案 首先我觉得这个可能是西门子疏忽,基本上每个大版本没有补丁前都有类似问题,下面来说说怎么解决吧.注意这里版本,N ...
- Matlab中的lambda表达式 f=@(x) x^2-2*x+1;
Matlab中的lambda表达式 f=@(x) x^-*x+;
- 6、 restful API
RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RE ...
- 2015ACM/ICPC亚洲区沈阳站重现赛-HDU5512-Pagodas-gcd
n pagodas were standing erect in Hong Jue Si between the Niushou Mountain and the Yuntai Mountain, l ...