1. 程式人生 > >android 未root手機獲取應用的sqlite資料庫

android 未root手機獲取應用的sqlite資料庫

在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"/>