安卓中路径问题

说路径首先说明安卓中的存储空间问题,(测试手机魅蓝note3,未root情况下)(此处对于api19之后出现的不做测试,no why 懒,嗯,理直气壮)。
(后序加的,经测试预查资料发现,安卓4.4之后,谷歌限制了对外置挂载sd卡的写的权限,就是说我们的getexteralstoragedic方法是无法获得外挂sd卡的路径的。)
对于我们开发者来说内部储存和外部储存与消费者的是不一样的。
(1.)例如有一个手机,厂家声称16g储存空间,此处无外置sd卡。
那么,这16g储存空间其中就包含有三种东西,系统镜像系统应用+我们自己安装的app应用所占空间(这里注意包括三部分,安装程序站空间,系统给我们app划的数据内部储存空间和app的数据外部储存空间)+剩余存放资料的空间。(他们具体大小不知道,不知道是厂家规定有大小限制,还是他们都随意使用这16g).
此时对于我们开发人员来说:
内部储存空间=系统镜像应用+我们自己安装的应用+系统给我们app划的数据内部储存空间(文件管理器不能访问到的,注意是手机上的文件管理器,不是我们开发者,咱们肯定可以的啦);
外部储存空间=剩余存放资料的空间+app的数据外部储存空间(文件管理器可以访问到的);(sd卡也算,但是获得路径方法不一样)
在表现形式上:
内部储存空间:/data/data/包名,这部分是位于内部储存空间,我们是无法通过文件管理器查看的(未root情况下)
外部储存空间:就是我们通过文件管理器可以查看到的,如/storage/emulate/0(这是我们外部储存的根目录)/android/data/包名。
那么问题来了。如何获取他们的路径
内部的:
getFileDir():内部储存空间 /data/data/包名/File
getCachtDir():内部储存空间 /data/data/包名/cache
这里边一般放sp文件或者sql文件。等重要文件。其他app正常情况访问不到,(如何恶意访问不知道)
外部的:此处主要调用这些方法的对象是不同的
context调用:
getExteralCacheDir():外部储存空间 /storage/emoult/0(这里是外部储存根目录)/android/data/包名/cache
getExteralFileDir(null或文件名):外部储存空间 /storage/emoult/0(这里是外部储存根目录)/android/data/包名/file/文件名(这里遵循的文件夹创建规则是有则使用,没有则创建,null表示到file一层,加文件名则表示到file的子目录file/文件名)(放这里边的外东西其他app访问不到,我在这里放一张照片,图库中就不显示,魅蓝note3)(上面这些文件夹及其中内容,在app删除后,会一同删除)
encironment调用:
getExteralStorageDirctionary:外部储存 /storage/enmoult/0 外部储存根目录,没错就是到这里。

安卓中路径问题_第1张图片
路径测试.PNG

********分割线上边是未安装sd卡,下边是安装sd卡,等我回去找张卡装上*******
我又回来了,经过我的测试当手机插入sd卡后
getExteralStorageDirctionary:
getExteralCacheDir():
getExteralFileDir(null或文件名):
这三个方法的值仍为外置储存空间的值。【注意】不是外挂sd卡的路径,那么如果想获得外挂sd卡路径怎么办 呢
http://blog.csdn.net/luckypeng/article/details/45688279
http://blog.csdn.net/u010663758/article/details/51308282
没实验过,不晓得

*******分割线上边是经常用的,下面是补充的*****
environment.getExteralPublicStorageDictionary(文件名):
/storage/enmoult/0/wenjianming 在外部储存的根目录下创建文件夹

在做开发中时我们对于sd卡的使用首先要做个是否挂在和是否可用的判断来保证程序严密性
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//SD卡已装入
}
8最后做一点汇总
1.放在data/data/包名 和/storage/emounlt/0/android/data/包名中的资源他人无法获得。
2.外置sd卡与我们手机内置存储空间(刨去系统镜像,系统应用,系统为我们app划分的内部数据存储空间和app安装所占空间)同属于外部储存。
3.environment。getexteralstoragedic()只能获得非外挂SD卡的路径,
外挂sd卡路径需另寻方法获取。

你可能感兴趣的:(安卓中路径问题)