2011-10-05 205 views
0

編輯:假設這個職位的根植電話。Android - SQLite數據庫訪問

我刪除了之前發佈在這個主題上的一個問題,因爲沒有答案甚至接近回答這個問題。長話短說,我需要打開一個數據庫並修改現有記錄。我不想使用「助手類」,因爲我實際上希望看到並理解幾行代碼中發生的情況,而不是包含100行代碼的不必要的(用於我的目的)類。所以請不要告訴我「使用記事本教程」。我有,並沒有解釋我需要什麼。

爲了簡化,這裏是我在做什麼:

SQLiteDatabase myDB = this.openOrCreateDatabase("/data/data/MY_APP/databases/settings.db", MODE_PRIVATE, null); 
myDB.execSQL("INSERT INTO my_table (SOME_FIELD) VALUES ('SOME_VALUE');"); 

這個工程非常漂亮。但是,如果我嘗試在另一個路徑中打開/編輯數據庫,則失敗。例如,我可能想要編輯另一個應用程序使用的數據庫。我怎樣才能做到這一點?這是一個簡單的權限問題嗎?它應該工作,如果我的應用程序請求並獲得root權限?

編輯:我可以在手機上安裝大量應用程序,可以編輯系統上的每個單一數據庫,所以顯然這可以完成。

+1

「編輯系統中的每個單獨的數據庫」 - 你有什麼說的這些神奇的應用程序? – Merlin

+0

@ Merlin你真的從沒見過DB編輯器應用程序嗎? 「SQLite編輯器」在市場上。它可以讓你打開,查看,編輯手機上的任何數據庫。我懷疑這是神奇的。 –

+1

除非它被植根,否則你不能在'/ data/data/some_other_app'中看到任何東西 – Merlin

回答

0

正如this答覆中提到,除非這兩個應用共享相同的用戶ID和相同的簽名密鑰

+0

那麼所有的SQLite編輯器應用程序如何做呢? –

+0

嗯,它看起來好像根植電話可能會這樣做。它也看起來像一個無根的手機能夠訪問存儲在SD卡上的數據庫,你可以給代碼[這裏](http://stackoverflow.com/questions/1055188/can-i-download-an-sqlite -db-on-sdcard-and-access-it-from-my-android-app/1055566#1055566)試一試。 – liftdeadtrees

+0

我不想從另一個應用程序的數據庫讀取數據,我只想從我自己的應用程序的/ assets /文件夾中讀取數據。 – marienke

0

簽署關於Android的安全性,你不能訪問其他應用程序的數據庫,則無法訪問其他人的應用DB直接。如果其他應用程序創建ContentProvider,則可以通過其提供程序訪問其數據庫(如果存在)。否則,AFAIK沒有出路。

+1

這顯然是不準確的,否則像「SQLite編輯器」這樣的應用程序將不存在於市場中。顯然這是可能的。 –

+0

xjaphx。這是你正在談論的內部數據庫的事情,但如果數據庫是在SD卡,那麼我想我可以訪問其他應用程序。 – Unknown

0

我不知道你是否仍在尋找這個答案。我期待着做同樣的事情,但無法找到任何東西。我知道我需要使用root進程,但是再次找不到任何東西。我開始亂搞,只是嘗試了很多隨機的東西,終於找到了一個辦法。

爲我工作的簡短版本是你需要,作爲根,更改數據庫的權限,直接訪問它(不通過一個sqlite幫手),做任何你想要的,然後把權限回來。我詳細的這一切在我的博客:

http://rratmansky.wordpress.com/?p=259&preview=true