2016-08-30 76 views
-4

我想設置一個Tasker任務,它將刪除時鐘中的所有鬧鐘。我安裝了它,並在我的舊手機上工作得很好。當沒有警報時,我所做的是製作了警報數據庫的副本。當我想刪除當前設置的警報時,Tasker運行一個shell命令來刪除當前具有警報的數據庫。然後Tasker運行一個shell命令來複制空數據庫並重命名它。然後一些命令來更改權限和所有者。Android無法複製數據庫

當我試圖將這一切都移到我的新手機是當我遇到了一些麻煩。新手機是一款One Plus 3,它的價值在於它。所以我將所有東西都複製過來了,看起來像是需要更改的唯一東西就是shell命令的軟件包名稱。我改變了這一點,並嘗試塔斯克任務。沒有運氣。時鐘應用程序凍結了。我從備份中恢復了所有內容。我決定做一些測試,看看問題出在哪裏。

我使用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

發佈您的代碼先生 – apelsoczi

+0

沒有代碼。我只是使用應用根資源管理器來複制數據庫。 – DasPete

+0

您是否正在複製您自己的應用程序數據庫?或其他數據庫到您的應用程序? – dex

回答

0

問題我的理解:
你說「當我複製一個數據庫中,我得到一個錯誤」,如果它在複製過程則是微不足道,如果你不是這個意思,那麼說。繼續... 你已經從某處複製了一個sqlite數據庫到某個地方(你不說它在哪裏,這可能很重要),並且你沒有權限打開它([也許你這樣做,然後這麼說]所有權限](但您可以打開原件)。記住文件權限(用戶對文件的權限)。 此方法適用於舊手機,但現在不適用於新手機(API版本將很有用,這些方法已經改變了很多)。 錯誤是關於光標查詢。 see my answer about Cursor's, and cursor management 不要以爲你的原代碼是完美的,因爲它的工作。需要更多細節。 發佈一些涉及錯誤的最小代碼。我們不是試圖竊取你的代碼,我們不能回答你的問題,沒有看到讓代碼崩潰的代碼,我們該怎麼做?還包括catlog。你永遠不知道,我們可能會給你的代碼,工程; O)

+0

感謝您的合法回覆。很明顯,這不是我的問題的適當論壇。我想我會在這個地方繼續前進。但我很欣賞你所付出的努力。謝謝! – DasPete