android 未root手機獲取應用的sqlite資料庫
阿新 • • 發佈:2019-01-29
在android中我們常用sqlite資料庫來存放檔案,在開發中我們可能需要檢視所有的資料,以保證資料的準確性。在已經root的手機下,我們可以進入/data/data/包名/databases目錄下獲取資料庫檔案,可以在ddms介面匯出,用sqliteexport軟體檢視。
但如果手機沒有root,我們用ddms是打不開/data/data目錄的。那如何獲取相應的db檔案呢?我們可以用檔案拷貝的方法,程式碼如下
//找到檔案的路徑 /data/data/包名/databases/資料庫名稱
File dbFile = new File(Environment.getDataDirectory().getAbsolutePath()+"/data/" +getPackageName()+"/databases/test.db");
FileInputStream fis = null;
FileOutputStream fos = null;
try {
//檔案複製到sd卡中
fis = new FileInputStream(dbFile);
fos = new FileOutputStream(Environment.getExternalStorageDirectory().getAbsolutePath()+"/copy.db" );
int len = 0;
byte[] buffer = new byte[2048];
while(-1!=(len=fis.read(buffer))){
fos.write(buffer, 0, len);
}
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally{
//關閉資料流
try {
if(fos!=null)fos.close();
if (fis!=null)fis.close();
}catch(IOException e){
e.printStackTrace();
}
}
在android manifest檔案加上許可權,經過測試,可行。簡單粗暴
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>