【问题标题】:How to preserve content generated by user on KitKat+?如何在 KitKat+ 上保存用户生成的内容?
【发布时间】:2015-03-12 17:13:04
【问题描述】:
这更多的是设计而不是技术问题...在 KitKat 上,Google 阻止了写入除指定应用程序文件夹之外的 SD 卡。只显示内容的应用程序没问题,但是生成内容的应用程序呢(我的意思是用户在该应用程序的帮助下生成内容:文档、数据库、统计数据)?我担心的是,如果卸载应用程序,那么系统会删除所有数据。大多数用户并不期望这种行为,他们只是不会想到这一点。当应用程序无法按预期运行时,用户会怎么做?是的,尝试重新安装它作为第一个解决方案。丢失所有用户文件!将它们备份到云上可能是一种选择,但 SD 存储主要用于存储大文件,通过移动网络备份它们会很昂贵。
所以问题是此类应用程序的开发人员:您采取了哪些方法来克服这种限制后果?
【问题讨论】:
标签:
android
application-design
android-external-storage
【解决方案1】:
一如既往
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 中的变化(真的不确定,只是在这里猜测)是每个文件创建都将该文件标记为读/写只是所有者,没有其他人。