
以下工作使用应用程序外部的内部手机存储路径:
sqliteDatabase sqlite = sqliteDatabase.openDatabase( "/storage/emulated/0/test.db",null,sqliteDatabase.OPEN_READWRITE | sqliteDatabase.NO_LOCAliZED_ColLATORS);
但是,使用SD卡的路径会引发异常:
sqliteDatabase sqlite = sqliteDatabase.openDatabase( "/storage/extSdCard/test.db",sqliteDatabase.OPEN_READWRITE | sqliteDatabase.NO_LOCAliZED_ColLATORS);
例外:
androID.database.sqlite.sqliteException: not an error (code 0): Could not open the database in read/write mode.
但是用OPEN_Readonly打开工作正常:
sqliteDatabase sqlite = sqliteDatabase.openDatabase( "/storage/extSdCard/test.db",sqliteDatabase.OPEN_Readonly | sqliteDatabase.NO_LOCAliZED_ColLATORS);
清单中的外部存储权限:
<uses-permission androID:name="androID.permission.READ_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />
希望Storage Access Framework或Lollipop SD API可以提供帮助,但我没有运气.
有没有办法打开一个具有SD卡写访问权限的sqliteDatabase文件?
解决方法 可能与此有关:“AndroID 4.4 KitKat与旧的4.3 Jellybean更新相比带来了很多变化.其中一个最重要的变化是它如何处理存储数据安全性.
在AndroID 4.4 KitKat之前,如果应用程序有权访问外部SD卡,则可以读取和写入可移动存储上的任何区域,包括DCIM,警报等系统文件夹.这些已经全部更改,现在是第三个 – 派对应用程序,例如您从Google Play或其他地方下载的应用程序,只能写入已创建或已拥有所有权的文件和文件夹.“
http://technofaq.org/posts/2014/04/fixing-external-sd-card-write-issue-on-android-kitkat/
解决方案可能是将文件复制到本地文件夹之前 – 取决于您的用例.
总结以上是内存溢出为你收集整理的通过Android中的OPEN_READWRITE访问在SD卡上打开SQLiteDatabase数据库全部内容,希望文章能够帮你解决通过Android中的OPEN_READWRITE访问在SD卡上打开SQLiteDatabase数据库所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)