Hallo zusammen.
Ich versuche schon seit Wochen das Problem zu lösen, leider ohne Erfolg.
Ich habe 2 Apps und ich möchte von der erste App ein Backup "von der SQLite Datenbank" erstellen und in der 2te App wieder Importieren.
Das mit dem erstellen und importieren ist kein Problem, nur kann ich mit der 2te App nicht auf die Datei zugreifen, diese ich mit der 1te App erstellt habe.
Früher hat es Problemlos funktioniert, aber seit Android 11 nicht mehr.
Ab November 2021 müssen alle Updates auf "targetSdkVersion" 30 eingestellt sein und jetzt muss ich mir natürlich überlegen, wie ich meine Apps weiterhin in Google Play behalten kann.
Ich möchte auch keine volle Rechte geben, da meine App sonst im Google Play abgelehnt wird.
Meine App braucht die Rechte um einen Backup zu erstellen und in der 2te App diese wieder zu Importieren.
Ich habe 2 Apps, da die erste App mit Werbung ist und die 2te App (Pro Version) ohne Werbung.
Hiermit erstelle ich einen Backup von der SQLite Datenbankdatei:
Hiermit Importiere ich die Datei wieder:
Ich würde mich sehr freuen, wenn mir da wer helfen kann und bedanke mich schon mal im Voraus.
Gruss
Ich versuche schon seit Wochen das Problem zu lösen, leider ohne Erfolg.
Ich habe 2 Apps und ich möchte von der erste App ein Backup "von der SQLite Datenbank" erstellen und in der 2te App wieder Importieren.
Das mit dem erstellen und importieren ist kein Problem, nur kann ich mit der 2te App nicht auf die Datei zugreifen, diese ich mit der 1te App erstellt habe.
Früher hat es Problemlos funktioniert, aber seit Android 11 nicht mehr.
Ab November 2021 müssen alle Updates auf "targetSdkVersion" 30 eingestellt sein und jetzt muss ich mir natürlich überlegen, wie ich meine Apps weiterhin in Google Play behalten kann.
Ich möchte auch keine volle Rechte geben, da meine App sonst im Google Play abgelehnt wird.
Meine App braucht die Rechte um einen Backup zu erstellen und in der 2te App diese wieder zu Importieren.
Ich habe 2 Apps, da die erste App mit Werbung ist und die 2te App (Pro Version) ohne Werbung.
Hiermit erstelle ich einen Backup von der SQLite Datenbankdatei:
Code:
ContentResolver resolver = getApplicationContext().getContentResolver();
Uri file = Uri.fromFile(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"Database_Backup.db"));
try (ParcelFileDescriptor pfd = resolver.openFileDescriptor(file, "rw")) {
try {
InputStream in = new FileInputStream(getDatabasePath(DBHelper.DATABASE_NAME));
OutputStream out = new FileOutputStream(pfd.getFileDescriptor());
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
out.flush();
out.close();
}
catch (FileNotFoundException e) {
Log.e("tag", e.getMessage());
}
catch (Exception e) {
Log.e("tag", e.getMessage());
}
} catch (IOException e) {
e.printStackTrace();
}
Hiermit Importiere ich die Datei wieder:
Code:
try (ParcelFileDescriptor pfd = ParcelFileDescriptor.open(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"Database_Backup.db"), ParcelFileDescriptor.MODE_READ_WRITE);) {
try {
File fileTo = new File(getDatabasePath(DBHelper.DATABASE_NAME).getParent(), DBHelper.DATABASE_NAME);
FileChannel src = new FileInputStream(pfd.getFileDescriptor()).getChannel();
FileChannel dst = new FileOutputStream(fileTo).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
} catch (Exception e) {
Log.d(TAG, "Import Failed!");
}
} catch (IOException e) {
e.printStackTrace();
}
Code:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" tools:ignore="ScopedStorage"/>
<application
.......
android:requestLegacyExternalStorage="true"
.........
Ich würde mich sehr freuen, wenn mir da wer helfen kann und bedanke mich schon mal im Voraus.
Gruss
Zuletzt bearbeitet: