2016-04-01 9 views
1

データフォルダーにアクセスしようとしたときにアンドロイドデバイスモニターに気づいたので、私の物理的な電話機で動作しているアプリケーションのSQLファイルをプルすることができますが、エミュレーターからアプリケーションにアクセスすると動作します。明らかに、エミュレータ上でアプリケーションを実行するのははるかに時間がかかるので、私はエミュレータを待つことができないように、このsqliteデータを時機を得たビバに提示する必要があります。デバイスモニタの物理的な電話機からSQLファイルを取得できません。

私はデバッグを許可していますが、デバイスモニタはデータフォルダを開くことができないため、デバッグは許可されていますが、なぜなら、フォルダの横の矢印が消えた後に再び表示されます数秒待っていますが、隣のドロップダウン矢印で他のすべてのフォルダにアクセスできます。

答えて

0

端末がルートされていない場合は、アプリのデータファイルにアクセスできません。ファイルの次のコードスニペットを使用して、ファイルをsdcardにコピーしてみてください。

public static void copyDataFile() { 
    File dataDir = getFilesDir().getParentFile(); 
    File target = new File(dataDir, "/* relative path to your sql file */"); 
    File out = new File(Environment.getExternalStorageDirectory(), "/* new file name */"); 
    copyFile(target, out); 
} 

public static void copyFile(File in, File out) { 
    if (in.exists()) { 
     if (!out.exists()) { 
      try { 
       out.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     FileInputStream is = null; 
     FileOutputStream os = null; 
     try { 
      is = new FileInputStream(in); 
      os = new FileOutputStream(out); 
      byte[] buf = new byte[4096]; 
      int l = 0; 
      while ((l = is.read(buf)) > 0) { 
       os.write(buf, 0, l); 
      } 
      os.flush(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       if (is != null) { 
        is.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      try { 
       if (os != null) { 
        os.close(); 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
}