Android无法复制数据库

时间:2016-08-30 01:52:27

标签: java android sqlite tasker

我正在尝试设置一个Tasker任务,该任务将删除时钟中的所有警报。我把它设置好并且在我的旧手机上工作得很好。当没有警报时,我所做的是制作警报数据库的副本。当我想删除当前设置的警报时,Tasker运行一个shell命令来删除当前包含警报的数据库。然后Tasker运行一个shell命令来复制空数据库并重命名它。然后一些命令来更改权限和所有者。

当我试图把它全部移到我的新手机上时,我遇到了一些麻烦。这款新手机是One Plus 3的价值所在。所以我复制了所有东西,唯一需要更改的东西是shell命令的包名。我改变了它并尝试了Tasker任务。没运气。时钟应用程序冻结了。我从备份中恢复了所有内容。我决定做一些测试,看看问题出在哪里。

我使用Root Explorer应用程序复制警报数据库。当我尝试打开复制的数据库时,我收到以下错误消息:

  

打开数据库时发生错误。尝试调用   虚方法'android.database.Cursor   android.database.sqlite.SQLiteDatabase.query(java.lang.String中,   java.lang.String [],java.lang.String,java.lang.String [],   null.java.lang.String,java.lang.String,java.lang.String)'   对象参考

我仍然可以打开原始数据库。但是当我复制它时,似乎发生了一些事情。任何见解都将是一个很大的帮助。谢谢

1 个答案:

答案 0 :(得分:0)

我理解的问题:
你说"当我复制数据库时,我得到一个错误",如果它在复制过程中那么它是微不足道的,如果你不是那个意思,那就说。继续... 你已经从某个地方复制了一个sqlite数据库,到了某些地方(你不知道在哪里,这可能很重要),你没有权限打开它[也许你这样做,然后这样说,给予所有权限](但你可以打开原件)。文件权限会浮现在脑海中(文件的用户权限)。 这种方法适用于旧手机但现在不能使用新手机(API版本会很有用,这些方法已经改变了很多)。 错误是关于Cursor查询。 see my answer about Cursor's, and cursor management 不要认为你的原始代码是完美的,因为它有效。需要更多细节。 发布一些涉及错误的最小代码。我们不是试图窃取您的代码,我们无法回答您的问题,如果没有看到导致其崩溃的代码,我们怎么能这样做?还包括catlog。你永远不会知道,我们可能会给你有用的代码; O)