zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C语言文件操作
    scrapy 提取XML文档
    汇编指令和寄存器
    C语言知识点
    sqlalchemy 的sqlite多线程设置
    Unity 打AssetBundle和加载方案
    unity 4种实现动态障碍方法
    入心诗词记
    人间问答
    生活中有哪些实用的心理学知识?
  • 原文地址:https://www.cnblogs.com/shuimojun/p/4858085.html
Copyright © 2011-2022 走看看