2016-03-23 3 views
0

Ich lese andere Posts über Export-Datenbank-Datei in Android, aber ich kann nicht herausfinden, wie diese Datenbank im Downloader-Ordner erstellen oder kopieren.Datenbank exportieren, um Ordner in Android herunterzuladen?

Ich verwende auf meinem Manifest (Berechtigungen):

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

Aktivität:

ich diese Funktion aufrufen, wenn ich eine Taste drücken, aber es passiert nichts (keine Ausnahmen und keine Datei zu kopieren oder von currentDBPath erstellt)

public void exportDatabase() { 
    try { 
     File download_folder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     File data = Environment.getDataDirectory(); 

     if (download_folder.canWrite()) { 
      String currentDBPath = "//data//"+getPackageName()+"//databases//"+"YourWords"; 
      String backupDBPath = "YourWords"; 
      File currentDB = new File(data, currentDBPath); 
      File backupDB = new File(download_folder, backupDBPath); 

      if (currentDB.exists()) { 
       FileChannel src = new FileInputStream(currentDB).getChannel(); 
       FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
      } 
     } 
    } catch (Exception e) { 

    }  
} 

Antwort

1

NIE hard~~POS=TRUNC WEGE.

Um ein File Objekt zu erhalten, das auf eine Datenbank zeigt, vorausgesetzt, die Datenbank befindet sich im Standardverzeichnis, use getDatabasePath().

Auch NIEMALS AUSNAHMEN ignorieren.

Fügen Sie Log.e("RuslanApp", "Crash in saving database", e); zum Block catch hinzu, damit Sie LogCat verwenden können, um zu sehen, was möglicherweise falsch läuft.

+0

Mit Toast und mit Ihrem Rat der Verwendung von Logs: Es sagt mir, dass Datei auf/storage/sdcard0/Download gespeichert wird, aber ich kann es nicht auf meinem Gerät ( siehe versteckte Dateien sind aktiviert). – Ruslan

+0

@Ruslan: Verwenden Sie 'MediaScannerConnection' und' scanFile() ', um den' MediaStore' zu ​​aktualisieren und sehen Sie, ob das hilft. – CommonsWare

+0

Schließlich war das Problem in .db in String-Namensdatei auf getDatabasePath(). Danke für Ihre Zeit und Ratschläge – Ruslan

Verwandte Themen