android 读写SD问题

昨晚学习android的文件IO,写测试文件,将文本保存在SD卡中,可是搞来搞去,文件总是被保存在手机存储里面了,我很纳闷,一直百度无果,又问群里的朋友,群里人的说法都和百度的结果差不多。大家都认为下面的代码可以得到SD卡的路径。

Environment.getExternalStorageDirectory().getAbsolutePath()

可是文件却总是保存在手机存储中,真是见了鬼。后来多番查阅资料才知道,google狗日的改了API,这样的代码只在android 4.4 API和android 4.4 系统有效。

在 2.x 版本中,Android设备都是单存储,第三方App写文件,必须申请 WRITE_EXTERNAL_STORAGE 权限;

在4.0之后,Android设备开始有了内置闪存,即 primary storage,并且可以外置SD卡,即 secondary external storage device;

WRITE_EXTERNAL_STORAGE 权限变成了仅仅控制 primary storage,同时引入了 WRITE_MEDIA_STORAGE 权限来控制secondary external storage device的操作。

到了Android 4.4 KitKat,WRITE_MEDIA_STORAGE 权限仅提供给系统应用,不再授予第三方App。

关于 secondary external storage device 的写操作也有了新规定。

WRITE_EXTERNAL_STORAGE 权限,仅仅用于授权用户写 primary external storage,除了与自己包名相关的文件夹之外,应用程序不允许写secondary external storage devices。

举例来说,如果应用的包名是com.example.foo,那么外部存储上的Android/data/com.example.foo/文件夹就可随意访问,其他任何地方都不允许写,并且,存储在自己包名相关的文件夹的文件,当该应用被卸载时候也会随之被清除。

 

那么以后开发程序就要按照google的要求来。

 

本文参考http://my.oschina.net/liucundong/blog/314520

转载于:https://www.cnblogs.com/shuimojun/p/4858085.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值