我正在稍微修改android操作系統,並希望訪問特定應用程序的sqlite數據庫。有沒有辦法從操作系統訪問(讀取/寫入)特定應用程序的sqlite數據庫?
我知道該位置存儲在/data/data/your.applications.package/databases
,但是,有沒有辦法從實際應用程序的上下文外部將數據庫加載到sqliteDatabase連接器?
我正在稍微修改android操作系統,並希望訪問特定應用程序的sqlite數據庫。有沒有辦法從操作系統訪問(讀取/寫入)特定應用程序的sqlite數據庫?
我知道該位置存儲在/data/data/your.applications.package/databases
,但是,有沒有辦法從實際應用程序的上下文外部將數據庫加載到sqliteDatabase連接器?
,有沒有辦法將數據庫裝載到從實際應用的環境之外的sqliteDatabase連接器?
是的,如果試圖打開數據庫的代碼具有對數據庫文件的讀寫權限。在這種情況下,只需在SQLiteDatabase
上使用open()
即可。
因此,以root身份運行的應用程序可以執行此操作,但普通的其他應用程序無法執行此操作,這是出於明顯的安全原因。
即使我試圖從內核訪問?
由於內核不運行Dalvik,因此您將無法以上述方式打開數據庫。
我不認爲這是可能的。這是Android的安全模式 的基礎。 http://developer.android.com/intl/de/guide/topics/security/security.html
其他數據庫必須有一個已發佈的ContentProvider,其上實現了 ,以便您能夠訪問其數據。 那麼你可以嘗試但這個http://androidforums.com/application-development/65082-accessing-database-another-application-using-content-provider.html
嗯,即使我試圖從內核訪問? – 2012-04-21 08:13:55
我真的不認爲這是可能的,除非其他應用程序已使用內容提供商或具有相同的簽名或已將其數據庫存儲在SD卡上。 – 2012-04-21 08:26:06
由於我要從操作系統中進行操作,因此我可以對數據庫文件進行chmod並將其加載到SQLiteDatabase中。 – 2012-04-21 21:14:18