您的位置:首页 > 运维架构

not an error (code 0): Could not open the database in read/write mode.的解决办法

2015-05-12 18:01 831 查看
问题 :在项目中,运行到在SD卡创建数据库时遇到了标题所述的错误

原因方面可以看以下这篇文章
http://lifehacker.com/android-kitkat-blocks-some-access-to-micro-sd-cards-1524997895
Android
KitKat Blocks Some Access to Micro SD Cards

里面讲到ANDROID 4.4 后,系统在应用对SD的读写方面做了限制。

应用要读写SD卡,必须申请权限,就算申请了SD卡的读写权限,也只能读在SD卡的共同文件夹。

It can't write to anything on the SD card outside of its designated sandbox.

这句意思大概是  应用不能在指定沙盒外在SD卡写入任何东西,我的理解可能不太到位

上面的情况,有的手机会出现,有的手机不会(同样是4.4以上的系统),不清楚是不是系统定制后产生的差异。

我在项目中还遇到过这种情况,用Intent发起选择图片视频时,无法获取别的应用(比如whatsapp)在SD卡保存的视频,手机没有root,不知道是别的应用对文件或文件夹设置了访问权限,还是因为以上的问题。

不过应用自己在SD卡上写入的图片视频是可以读写的。

解决办法:

不要在SD上创建数据库文件,应该在应用的私有文件夹“/data/data/包名”

下面的文章也给出了几种解决方案,不过有的要root,有的要定制ROM,所以不太实际
http://technofaq.org/posts/2014/04/fixing-external-sd-card-write-issue-on-android-kitkat/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐