我需要從我的應用程序讀取另一個應用程序的sqlite數據庫。我知道默認情況下,這在android應用程序中是不可能的,但是當設備被植入時,我認爲我應該能夠給予我的應用程序根權限並獲取其他應用程序的數據庫並讀取它。如何在Android中讀取另一個應用程序數據庫
我不希望設備用戶得到通知並給我SUPER_ACCESS
權限,所以這應該是一個匿名過程。另一個應用程序已經實現ContentProvider並已設置exported = true
這是我迄今爲止嘗試過的,但它仍然會引發無法打開數據庫文件的異常。
try {
File dbFile = new File("/data/data/com.sam.sample/databases/sample.db");
if(dbFile.exists()) {
String [] cmd = {"su", "-c", "chmod", "777", file.getPath()};
Process process = new ProcessBuilder(cmd).start();
process.waitFor();
SQLiteDatabase db = SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READONLY);
Cursor cursor = db.rawQuery("SELECT * FROM sample", null);
if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
Log.v("FROM DATABASE", name);
cursor.moveToNext();
}
}
}
cursor.close();
db.close();
}
}
catch(IOException e) {
...
}
有什麼,我在這裏做錯了或我應該做不同?
如果其他應用程序已經實現了內容提供商並將其導出,爲什麼不直接使用它 – banguru