2016-04-01 3 views
1

Ich habe festgestellt, in der Android-Gerät-Monitor, wenn ich versuche, auf den Datenordner zuzugreifen, so kann ich die SQL-Datei meiner Anwendung, die auf meinem Handy läuft es funktioniert nicht funktioniert, aber beim Zugriff auf die Anwendung über einen Emulator funktioniert es . Offensichtlich ist das Ausführen der Anwendung auf dem Emulator viel zeitaufwendiger und ich muss diese sqlite-Daten in einem zeitlich festgelegten viva präsentieren, so dass ich nicht wirklich auf einen Emulator warten kann.Das Abrufen der SQL-Datei vom physischen Telefon im Gerätemonitor funktioniert nicht?

Ich habe mich gefragt, warum dies passiert, da ich Debuggen erlaubt habe und während es keine Sicherheitsüberprüfungen mehr verlangt, öffnet der Gerätemonitor den Datenordner nicht, wenn geklickt wird, verschwindet die Pfeilspitze neben dem Ordner und erscheint danach wieder ein paar Sekunden, aber ich kann immer noch auf jeden anderen Ordner mit einem Dropdown-Pfeil daneben zugreifen.

Antwort

0

Wenn Ihr Gerät nicht gerootet ist, können Sie nicht auf die Datendatei Ihrer App zugreifen. Versuchen Sie, das folgende Code-Snippet in einem Ihrer Activity zu verwenden, um die Datei auf SD-Karte zu kopieren.

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(); 
      } 
     } 
    } 
}