summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2017-12-24 13:11:41 +0100
committerByteHamster <info@bytehamster.com>2017-12-24 13:11:57 +0100
commitb665792d2920a1f6116289492d92c739c3706c7b (patch)
tree4c6c980a2e76514de25cf50efc5a6ce8b5ed691f /app/src/main/java/de
parent2e5407370fd9bdcf4646140d6dd9563cbb8cca72 (diff)
downloadAntennaPod-b665792d2920a1f6116289492d92c739c3706c7b.zip
Cleanup import/export
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/ImportExportActivity.java166
1 files changed, 62 insertions, 104 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/ImportExportActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/ImportExportActivity.java
index a0388cb03..862420325 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/ImportExportActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/ImportExportActivity.java
@@ -1,9 +1,7 @@
package de.danoeh.antennapod.activity;
import android.content.ComponentName;
-import android.content.Context;
import android.content.Intent;
-import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -30,12 +28,8 @@ import java.nio.channels.FileChannel;
* Displays the 'import/export' screen
*/
public class ImportExportActivity extends AppCompatActivity {
- private static final int READ_REQUEST_CODE = 42;
- private static final int READ_REQUEST_CODE_DOCUMENT = 43;
- private static final int WRITE_REQUEST_CODE_DOCUMENT = 44;
-
- private static final String TAG = ImportExportActivity.class.getSimpleName();
-
+ private static final int REQUEST_CODE_RESTORE = 43;
+ private static final int REQUEST_CODE_BACKUP_DOCUMENT = 44;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -63,68 +57,83 @@ public class ImportExportActivity extends AppCompatActivity {
}
}
+ private void backup() {
+ if (Build.VERSION.SDK_INT >= 19) {
+ Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT)
+ .addCategory(Intent.CATEGORY_OPENABLE)
+ .setType("application/x-sqlite3")
+ .putExtra(Intent.EXTRA_TITLE, "AntennaPodBackup.db");
+
+ startActivityForResult(intent, REQUEST_CODE_BACKUP_DOCUMENT);
+ } else {
+ try {
+ File sd = Environment.getExternalStorageDirectory();
+ File backupDB = new File(sd, "AntennaPodBackup.db");
+ writeBackupTo(new FileOutputStream(backupDB));
+ } catch (Exception e) {
+ e.printStackTrace();
+ Snackbar.make(findViewById(R.id.import_export_layout), e.getMessage(), Snackbar.LENGTH_SHORT).show();
+ }
+ }
+ }
+
private void restore() {
if(Build.VERSION.SDK_INT >= 19) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
- startActivityForResult(intent, READ_REQUEST_CODE_DOCUMENT);
+ startActivityForResult(intent, REQUEST_CODE_RESTORE);
} else {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
- startActivityForResult(Intent.createChooser(intent, getString(R.string.import_select_file)), READ_REQUEST_CODE);
+ startActivityForResult(Intent.createChooser(intent,
+ getString(R.string.import_select_file)), REQUEST_CODE_RESTORE);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
- if (requestCode == READ_REQUEST_CODE_DOCUMENT && resultCode == RESULT_OK) {
- if (resultData != null) {
- Uri uri = resultData.getData();
- writeDatabase(uri);
- }
- } else if (requestCode == WRITE_REQUEST_CODE_DOCUMENT && resultCode == RESULT_OK) {
- if (resultData != null) {
- Uri uri = resultData.getData();
- writeBackupDocument(uri);
- }
- } else if(requestCode == READ_REQUEST_CODE && resultCode == RESULT_OK) {
- if (resultData != null) {
- Uri uri = resultData.getData();
- writeDatabase(uri);
- }
+ if (requestCode == REQUEST_CODE_RESTORE && resultCode == RESULT_OK && resultData != null) {
+ Uri uri = resultData.getData();
+ restoreFrom(uri);
+ } else if (requestCode == REQUEST_CODE_BACKUP_DOCUMENT && resultCode == RESULT_OK && resultData != null) {
+ Uri uri = resultData.getData();
+ backupToDocument(uri);
}
}
- private void writeDatabase(Uri inputUri) {
+ private void restoreFrom(Uri inputUri) {
File currentDB = getDatabasePath(PodDBAdapter.DATABASE_NAME);
try {
InputStream inputStream = getContentResolver().openInputStream(inputUri);
copyInputStreamToFile(inputStream, currentDB);
inputStream.close();
-
- AlertDialog.Builder d = new AlertDialog.Builder(ImportExportActivity.this);
- d.setMessage(R.string.import_ok);
- d.setCancelable(false);
- d.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> {
- Intent intent = new Intent(getApplicationContext(), SplashActivity.class);
- ComponentName cn = intent.getComponent();
- Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
- startActivity(mainIntent);
- });
- d.show();
+ displayImportSuccessDialog();
} catch (Exception e) {
e.printStackTrace();
Snackbar.make(findViewById(R.id.import_export_layout), e.getMessage(), Snackbar.LENGTH_SHORT).show();
}
}
+ private void displayImportSuccessDialog() {
+ AlertDialog.Builder d = new AlertDialog.Builder(ImportExportActivity.this);
+ d.setMessage(R.string.import_ok);
+ d.setCancelable(false);
+ d.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> {
+ Intent intent = new Intent(getApplicationContext(), SplashActivity.class);
+ ComponentName cn = intent.getComponent();
+ Intent mainIntent = IntentCompat.makeRestartActivityTask(cn);
+ startActivity(mainIntent);
+ });
+ d.show();
+ }
+
private void copyInputStreamToFile(InputStream in, File file) {
try {
OutputStream out = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
- while((len=in.read(buf))>0){
- out.write(buf,0,len);
+ while ((len = in.read(buf)) > 0){
+ out.write(buf, 0, len);
}
out.close();
} catch (Exception e) {
@@ -132,58 +141,25 @@ public class ImportExportActivity extends AppCompatActivity {
}
}
- private static String getPath(Context context, Uri uri) {
- if ("content".equalsIgnoreCase(uri.getScheme())) {
- String[] projection = { "_data" };
- Cursor cursor = null;
-
- try {
- cursor = context.getContentResolver().query(uri, projection, null, null, null);
- int column_index = cursor.getColumnIndexOrThrow("_data");
- if (cursor.moveToFirst()) {
- return cursor.getString(column_index);
- }
- } catch (Exception e) {
- // Eat it
- } finally {
- cursor.close();
- }
- }
- else if ("file".equalsIgnoreCase(uri.getScheme())) {
- return uri.getPath();
- }
-
- return null;
- }
-
- private void backup() {
- if (Build.VERSION.SDK_INT >= 19) {
- Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT)
- .addCategory(Intent.CATEGORY_OPENABLE)
- .setType("application/x-sqlite3")
- .putExtra(Intent.EXTRA_TITLE, "AntennaPodBackup.db");
-
- startActivityForResult(intent, WRITE_REQUEST_CODE_DOCUMENT);
- } else {
- try {
- File sd = Environment.getExternalStorageDirectory();
+ private void backupToDocument(Uri uri) {
+ try {
+ ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(uri, "w");
+ FileOutputStream fileOutputStream = new FileOutputStream(pfd.getFileDescriptor());
+ writeBackupTo(fileOutputStream);
+ fileOutputStream.close();
+ pfd.close();
- if (sd.canWrite()) {
- File backupDB = new File(sd, "AntennaPodBackup.db");
- writeBackup(new FileOutputStream(backupDB));
- } else {
- Snackbar.make(findViewById(R.id.import_export_layout),
- "Can not write SD", Snackbar.LENGTH_SHORT).show();
- }
- } catch (Exception e) {
- e.printStackTrace();
+ Snackbar.make(findViewById(R.id.import_export_layout),
+ R.string.export_ok, Snackbar.LENGTH_SHORT).show();
+ } catch (IOException e) {
+ e.printStackTrace();
- Snackbar.make(findViewById(R.id.import_export_layout), e.getMessage(), Snackbar.LENGTH_SHORT).show();
- }
+ Snackbar.make(findViewById(R.id.import_export_layout),
+ "Can not write SD", Snackbar.LENGTH_SHORT).show();
}
}
- private void writeBackup(FileOutputStream outFileStream) {
+ private void writeBackupTo(FileOutputStream outFileStream) {
try {
File currentDB = getDatabasePath(PodDBAdapter.DATABASE_NAME);
@@ -207,22 +183,4 @@ public class ImportExportActivity extends AppCompatActivity {
}
}
- private void writeBackupDocument(Uri uri) {
- try {
- ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(uri, "w");
- FileOutputStream fileOutputStream = new FileOutputStream(pfd.getFileDescriptor());
- writeBackup(fileOutputStream);
- fileOutputStream.close();
- pfd.close();
-
- Snackbar.make(findViewById(R.id.import_export_layout),
- R.string.export_ok, Snackbar.LENGTH_SHORT).show();
- } catch (IOException e) {
- e.printStackTrace();
-
- Snackbar.make(findViewById(R.id.import_export_layout),
- "Can not write SD", Snackbar.LENGTH_SHORT).show();
- }
- }
-
}