兄弟,你理解错了。

可以看看官方文档。

Android的储存空间分两块:Internal storage和External storage

Internal storage

总是可用的,不需要额外权限,这里的文件默认只能被我们的app所访问。

可以通过Context下的getFilesDir()方法获取到App的internal目录,通过getCacheDir()获取到internal缓存目录。

External storage

可能由于挂载外部储存器的原因导致这个空间不是总是可用。但是目前越来越多的厂商已经不允许用户自行使用SD卡来扩容,转而固定了设备的储存空间,这些储存空间仍会被分为Internal storage和External storage,不过这种情况下External storage基本上是总是可用的,你也可以使用

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

来判断External storage是否挂载。

可以通过Context下的getExternalFilesDir()方法获取到App的external目录,通过getExternalCacheDir()获取到external缓存目录。

这两个目录位于外置储存空间目录/Android/data/你的App的包名/下,你往这里面读写是不需要额外权限的(API 18以上),如果你的App的minSdkVersion <= 18,建议你在AndroidManifest.xml里加上这个权限:

android:name="android.permission.WRITE_EXTERNAL_STORAGE"

android:maxSdkVersion="18"/>

但是,如果你往这个目录以外的地方读写文件,就需要运行时权限了(例如你要往External storage根目录里写一个日志文件啥的)

很多App或者第三方SDK会往External storage根目录读写缓存,分分钟逼死强迫症,看着自己手机外置SD卡根目录下各种奇奇怪怪的目录,真的很崩溃好吗?不过我相信随着6.0及以上版本Android设备占有率的不断上升,这个问题一定会慢慢解决的。

希望各位Android应用开发的同仁,尽量使用getExternalFilesDir()和getExternalCacheDir()方法,还用户一个干净整洁的External storage。

android6.0 sd卡卸载api,android6.0 用户关掉sd卡读取权限的情况下, 还能做到手机缓存么?...相关推荐

  1. c# .netframwork 4.0 调用 2.0时报错 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。...

    "System.IO.FileLoadException"类型的未经处理的异常在 XXX.dll 中发生 其他信息: 混合模式程序集是针对"v2.0.50727" ...

  2. C#连接Sqlite 出现:混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。的解决方案...

    C#连接Sqlite 出现: 混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集.的解决方案 C#连接s ...

  3. 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...

    其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的Sy ...

  4. C# 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集...

    1.在项目解决方案中,找到项目的app.config文件 2.修改app.config里面的内容   原来的代码: <?xml version="1.0"?> < ...

  5. 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    程序中用到SQLite,添加引用后会出现此错误.解决方法如下 在app.config的configuration节点下添加 <startup useLegacyV2RuntimeActivati ...

  6. 无法通过“控制面板”卸载 Office 2003、Office 2007 或 Office 2010 套件的情况下,如何才能将其卸载?...

    今天我安装了OFFICE2007,但是在网上找得密钥只能用20天,我就卸载再使用其他密钥安装,但是卸载了后就不能安装了,提示:错误 1706.我就在网上搜索方法,终于找到微软技术支持官方:http:/ ...

  7. android 8.0 支付宝,新版支付宝钱包8.0发布(注意!有bug出没)

    新版支付宝钱包8.0界面做了小幅升级,新增一起AA.会员卡等功能.不过这bug也跟着升级,就有点儿不太科学了. 支付宝钱包一直是小编手机必装应用之一,有了支付宝钱包,购物.转账.充值等都十分便捷.尤其 ...

  8. java中0是真是假_为什么0为假?

    零可能为假,因为大多数CPU都有一个可用于分支的零标志.它保存比较操作. 让我们看看为什么. 一些伪代码,因为观众可能不阅读汇编 c-源简单循环调用摆动10次 for(intfoo=10;foo> ...

  9. SD 协议与协议栈源码分析(SD 内存卡)

    本文结合 SD Spec v2.0 和 Spec v3.0,分析了以下几个协议栈中的一些重要实现部分,由于大部分协议栈都没有实现完全,后面挑选了典型的实现进行分析, esp32 SD 协议栈 rt-t ...

最新文章

  1. 如何不停机迁移一个mysql INNODB 数据库?
  2. sql server 与 mysql在自定以数据类型的区别
  3. poj 2482 Stars in Your Window (线段树扫描线)
  4. To Noob Json是什么鬼?
  5. 一些关于Viewport与device-width的东西~(转)
  6. FreeSql (十七)联表查询
  7. leetcode 151 python
  8. Linux安装php运行环境
  9. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)签到题K Co-prime Permutation,L Let‘s Play Curling
  10. 抛弃jQuery:DOM API之操作元素
  11. 惠普计算机硬盘序列号怎么查询,硬盘序列号怎么看 【设置办法】
  12. TPP并不可怕,可怕的是我们开始自我封闭
  13. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-20期...
  14. UEFI开发编程汇总 (持续更新)
  15. 爱情是人类最高贵的情感
  16. 英文单词cipher 和password的区别,用法有什么不同,
  17. SMSAlarm短信猫语音猫快速连接
  18. PS 运行错误代码: 16 的解决方法
  19. 湛江各县市区5G建设计划已明确,共计7460座5G基站
  20. windows10安全模式进入循环蓝屏修复

热门文章

  1. Tecplot云图锯齿状边界解决办法
  2. uploadify java 上传_jquery使用uploadify插件实现多文件的上传(java版)
  3. OpenGL-坐标系
  4. Cubieboard安装Debian在Nand中
  5. 五大算法之三--贪心算法
  6. CAN总线技术在船舶监控系统的应用
  7. java连接imserver_java后端IM消息推送服务开发——协议
  8. php mysql 库存变负数_php解决秒杀并发入库导致的库存负数
  9. oracle查表占的物理空间,查询Oracle表实际物理使用大小
  10. arcgis批量将栅格里的nodata转为0