我正在尝试在我的 SD 卡上创建一个数据库。每当我调用 SQLiteDatabase.openOrCreateDatabase 时,我都会收到错误:
07-21 13:33:17.587: 错误/AndroidRuntime(5541): 原因:
android.database.sqlite.SQLiteException:无法打开数据库文件
有谁知道可能是什么原因造成的?这是我的数据库类的 open() 方法中的代码:
File sdcard = Environment.getExternalStorageDirectory();
String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + Schema.DATABASE_NAME ;
db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
一个可能的错误可能是您没有设置适当的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然而,在 SD 卡上存储数据被认为是不安全的。因为每个有权在 SD 存储上存储数据的应用程序都可以访问数据库。
编辑:另一个可能的问题是外部存储可能不可用。您需要确保您的外部存储当前可写。一种方法是通过确定状态getExternalStorageState
(参见参考资料here http://developer.android.com/reference/android/os/Environment.html#getExternalStorageState%28%29).
getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage.
参考 http://developer.android.com/reference/android/os/Environment.html#MEDIA_SHARED。这里还有一个有关检查状态的 stackoverflow 帖子:将文本文件写入 SD 卡失败 https://stackoverflow.com/questions/4580683/android-java-writing-text-file-to-sd-card
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)