这更多的是设计而不是技术问题......在KitKat上谷歌禁止写入SD卡,除了指定的应用程序文件夹。对于只显示内容的应用程序来说没问题,但是生成内容的应用程序呢(我的意思是用户在该应用程序的帮助下生成内容:文档,数据库,统计数据)?我担心的是,如果卸载了应用程序,那么系统将删除所有数据。大多数用户不期望这种行为,他们只是不会想到这一点。当应用程序无法按预期工作时,用户会做什么?是的,尝试重新安装它作为第一个解决方案。丢失所有用户文件!将它们备份到云端可能是一种选择,但SD存储主要用于大型文件,通过移动网络备份它们会很昂贵。
所以问题是这些应用程序的开发人员:你采取了什么方法来克服这种限制后果?
答案 0 :(得分:0)
一如既往
File folder = new File(Environment.getExternalStorageDirectory(), "/myApp/");
folder.mkdirs();
File file = new File(folder, "file.jpg");
// open output stream and write to it... works fine...
在任何版本的Android上都能正常工作。
据我了解,对KitKat的限制是,在您致电folder.mkdirs();
之后,其他应用程序无法访问它。在Android上,为每个应用创建了一个新用户,他们如何控制/阻止权限,所以我相信KitKat中的变化(真的不确定,只是在这里猜测)是每个文件创建都将该文件标记为只读/写入所有者,没有其他人。