Android创建数据库的权限

时间:2011-05-29 04:04:33

标签: java android sqlite android-manifest

嗨我在android中创建sqlite数据库时遇到了一些问题。

在模拟器上一切正常,我可以创建数据库。但它不适用于实际的机器。当我尝试在手机上调试应用程序时,它无法创建数据库。

所以有人能告诉我发生了什么吗?我需要在Manifest文件中添加任何特殊权限吗?我已经尝试过ACCESS_CHECKIN_PROPERTIES或WRITE_EXTERNAL_STORAGE,但仍然无法获取数据库。

顺便说一下,自定义数据库是否只能存储在SD卡中,而是根目录?

非常感谢!!

6 个答案:

答案 0 :(得分:15)

如果错误中没有任何反馈,则无法告诉您代码中的错误。不过,我可以告诉你,需要ACCESS_CHECKIN_PROPERTIES才能使用自己的数据库。除非您尝试访问SD卡,否则不应该WRITE_EXTERNAL_STORAGE

默认情况下,数据库存储在内部存储中app文件夹的子文件夹中,即:

/data/data/YOUR_APP/databases/YOUR_DATABASAE.db

如果你在物理设备上这样做,它必须扎根。

答案 1 :(得分:3)

我有完全相同的问题。我的应用程序将在模拟器上创建一个数据库,读取和写入数据,但在设备上它会崩溃。

我找到了一个非常简单的解决方案:在/data/data/YOUR_APP/databases/YOUR_DATABASAE.db上手动删除设备上的数据库,然后重新运行您的应用。

在我的案例中工作,希望它有所帮助。

答案 2 :(得分:2)

它很容易解决您必须没有在db java文件中声明的DataBase Name中添加.db扩展名 例如,public static final String DB_NAME = "tasks.db";

不要忘记.db扩展

答案 3 :(得分:1)

也许您遇到此问题,因为您的手机上安装了prevoius版本的应用。在安装新版本之前,请尝试通过“应用程序管理器”卸载之前的版本。我这样解决了。

答案 4 :(得分:1)

在第一次检查权限和运行时获取权限时,但由于targetSdkVersion为25,问题未解决, 使用db而不使用.db的EXTENSION总是很好并且工作,但它看起来25的targetSdkVersion需要扩展.db 我的问题解决了。

答案 5 :(得分:0)

我已从设置中清除了应用程序中的应用程序数据,然后卸载并运行该应用程序,并使用.db扩展名重命名了db文件,

相关问题