-4

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

当我试图将这一切转移到我的新手机上时,我遇到了一些麻烦。这款新手机是物有所值的一加 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[], java .lang.String, java.lang.String, java.lang.String)' 在空对象引用上

我仍然可以很好地打开原始数据库。但是当我复制它时,似乎正在发生一些事情。任何见解都会有很大帮助。谢谢

4

1 回答 1

0

我理解的问题:
您说“当我复制数据库时出现错误”,如果它在复制过程中那么它是微不足道的,如果你不是那个意思,那就这么说。继续...您已将 sqlite 数据库从某个地方复制到某个地方(您不说在哪里,这可能很重要),并且您无权打开它[也许您这样做,然后这么说,给所有权限](但可以打开原件)。想到文件权限(文件的用户权限)。此方法适用于旧手机,但现在不适用于新手机(API 版本会很有用,这些方法已经改变了很多)。该错误与光标查询有关。 查看我关于光标和光标管理的答案 不要假设您的原始代码是完美的,因为它有效。需要更多细节。发布一些涉及错误的最小代码。我们不是要窃取您的代码,我们无法回答您的问题,而不会看到导致其崩溃的代码,我们该怎么做?还包括目录。你永远不知道,我们可能会为你提供有效的代码;O)

于 2016-09-06T20:58:49.553 回答