Android 中外部存储在不同android版本上面的位置
2016-03-19 17:22
465 查看
Android 底层是Linux的内核,所以默认的外部存储还是在mnt/sdcard
外部存储分为公共目录和私有目录,获取方法如下:
外部共有目录
外部私有目录:
通过代码来得到相应的外部存储的位置:
下面是在3个不同的android 版本中的执行:
注意:因为没有root ,所以在DDMS中第二个和第三个没有显示/storage/emulated/0这个路径
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0:Android 2.3.3 API 10 的 模拟器上面
只有/sdcard 和/mnt/sdcard
而且/sdcard 还是链接到/mnt/sdcard上面的,所以最终存储在/mnt/sdcard中。
1:Android 4.3 API 18 的三星手机,因为没有外部的存储卡,所以手机自动的模拟出来一个外部的存储。
/sdcard 和/mnt/sdcard 都是链接的/storage/emulated/legacy
包括一个/storage/sdcard0也是链接/storage/emulated/legacy
最终这个/storage/emulated/legacy 链接的是/mnt/shell/emulated/0 这个文件夹。
2:Android 5.0.2 API 21 的MOTO X手机
和上面的三星手机非常类似,只是有一点区别就是
/storage/emulated/legacy 不再链接/mnt/shell/emulated/0 这个文件夹,但是里面的内容确实是一模一样的
BTW: Android版本对应API Level
外部存储分为公共目录和私有目录,获取方法如下:
外部共有目录
路径名 | 如何得到 |
共有的路径: /mnt/sdcard | 通过Environment.getExternalStorageDirectory得到 |
公共文件夹 音乐文件夹的目录/mnt/sdcard/Music | 通过Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)得到 |
路径名 | 如何得到 |
---|---|
路径/mnt/sdcard/Android/data/包名/cache | 通过getExternalCacheDir得到 |
路径/mnt/sdcard/Android/data/包名/files | 通过getExternalFilesDir得到 |
路径/mnt/sdcard/Android/data/包名/files/images | 通过getExternalFilesDir("images")得到 |
//***************************************外部存储**************************************** Log.d("Kodulf","***************************************外部存储-外部共有目录**************************************** "); //获取外部存储的文件夹 File directory = Environment.getExternalStorageDirectory(); Log.d("Kodulf","Environment.getExternalStorageDirectory ="+directory.getPath()); //获取外部存储的公共的 音乐文件夹 File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC); Log.d("Kodulf", "Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =" + externalStoragePublicDirectory.getPath()); Log.d("Kodulf","***************************************外部存储-外部私有目录**************************************** "); //相当于内部存储的getCacheDir() File externalCacheDir = getExternalCacheDir(); Log.d("Kodulf", "getExternalCacheDir =" + externalCacheDir.getPath()); //File[] externalCacheDirs = getExternalCacheDirs(); API 19才有的
下面是在3个不同的android 版本中的执行:
注意:因为没有root ,所以在DDMS中第二个和第三个没有显示/storage/emulated/0这个路径
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
0:Android 2.3.3 API 10 的 模拟器上面
只有/sdcard 和/mnt/sdcard
而且/sdcard 还是链接到/mnt/sdcard上面的,所以最终存储在/mnt/sdcard中。
D/Kodulf: ***************************************外部存储-外部共有目录**************************************** D/Kodulf: Environment.getExternalStorageDirectory =/mnt/sdcard D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/mnt/sdcard/Music D/Kodulf: ***************************************外部存储-外部私有目录**************************************** D/Kodulf: getExternalCacheDir =/mnt/sdcard/Android/data/tech.androidstudio.filedemo/cache D/Kodulf: getExternalFilesDir =/mnt/sdcard/Android/data/tech.androidstudio.filedemo/files/images
1:Android 4.3 API 18 的三星手机,因为没有外部的存储卡,所以手机自动的模拟出来一个外部的存储。
/sdcard 和/mnt/sdcard 都是链接的/storage/emulated/legacy
包括一个/storage/sdcard0也是链接/storage/emulated/legacy
最终这个/storage/emulated/legacy 链接的是/mnt/shell/emulated/0 这个文件夹。
D/Kodulf: ***************************************外部存储-外部共有目录**************************************** D/Kodulf: Environment.getExternalStorageDirectory =/storage/emulated/0 D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/storage/emulated/0/Music D/Kodulf: ***************************************外部存储-外部私有目录**************************************** D/Kodulf: getExternalCacheDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/cache D/Kodulf: getExternalFilesDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/files/images
2:Android 5.0.2 API 21 的MOTO X手机
和上面的三星手机非常类似,只是有一点区别就是
/storage/emulated/legacy 不再链接/mnt/shell/emulated/0 这个文件夹,但是里面的内容确实是一模一样的
D/Kodulf: ***************************************外部存储-外部共有目录**************************************** D/Kodulf: Environment.getExternalStorageDirectory =/storage/emulated/0 D/Kodulf: Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC) =/storage/emulated/0/Music D/Kodulf: ***************************************外部存储-外部私有目录**************************************** D/Kodulf: getExternalCacheDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/cache D/Kodulf: getExternalFilesDir =/storage/emulated/0/Android/data/tech.androidstudio.filedemo/files/images
BTW: Android版本对应API Level
相关文章推荐
- Android基础
- Android官方开发文档Training系列课程中文版:构建第一款安卓应用之入门指南
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- Android之线程池深度剖析
- 十一、Android的线程和线程池
- 十、Android的消息机制
- 图文讲解Android的ImageView类中的ScaleType属性设置
- Android Studio 报错 plugin is too old
- android 仿ios列表头可以停靠在列表顶部的列表PinnedHeaderListView
- android图片的三级缓存
- android 获得焦点并弹出软键盘
- 【LatinIME】默认开启键盘按键声
- android AndFix热补丁框架(不发版本,修复线上bug)
- Android日期相关函数的工具类
- 七、Android动画
- Android中使用Bitmap类将矩形图片转为圆形的方法
- Android-屏幕适配全攻略(绝对详细)(二)
- android中内存泄漏和内存溢出的区别
- android相机和相册
- android 编译faad2