我在一周前在Android开发列表上发布了这个问题,但到目前为止还没有回复.
我遇到了一个奇怪的问题.我使用位于/ sdcard /上的数据库,并且出于某种原因,每当我添加<uses-sdk android:minSdkVersion="8" />到清单时,sqlite都会将db打开为只读.它也有点怪异.下面的代码打开db并检查db是否为readonly,返回false:
db = SQLiteDatabase.openDatabase("/sdcard/test.db3", null,
SQLiteDatabase.OPEN_READWRITE);
Log.i(LOGTAG, "Database status: " + db.isReadOnly());
但如果我尝试写任何数据,它会炸弹:
INFO/Database(6576): sqlite returned: error code = 8, msg = prepared
statement aborts at 24: [INSERT INTO tags(type_id , tag)
VALUES(?, ?);]
ERROR/Database(6576): Error inserting type_id =1 tag=TestTag
ERROR/Database(6576): android.database.sqlite.SQLiteException: error
code 8: attempt to write a readonly database
如果我从清单中删除uses-sdk标记,一切正常.我在模拟器,运行2.2.1的NexusOne和Galaxy Tab上验证了这种行为.这是一个已知的问题?有解决方法吗?
任何帮助将不胜感激.
你需要这个WRITE_EXTERNAL_STORAGE许可.
此外,永远不要永远不会永远不会像您一样硬编码外部存储路径.您的代码将在Android 2.2设备上中断.您的代码将在其他设备上中断.请使用Environment.getExternalStorageDirectory().
| 归档时间: |
|
| 查看次数: |
2876 次 |
| 最近记录: |