首页 文章

Android无法复制数据库

提问于
浏览
-4

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

当我试图把它全部移到我的新手机上时,我遇到了一些麻烦 . 这款新手机是One Plus 3的 Value 所在 . 所以我复制了所有东西,唯一需要更改的东西是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)'

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

1 回答

  • 0

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

相关问题