diff --git a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java
index b982e1be8..d8246a6af 100644
--- a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java
+++ b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java
@@ -93,7 +93,7 @@ public class ImportBackupService extends Service {
uri = data;
}
- if (password == null || uri == null) {
+ if (password == null || password.isEmpty() || uri == null) {
return START_NOT_STICKY;
}
if (running.compareAndSet(false, true)) {
@@ -158,14 +158,6 @@ public class ImportBackupService extends Service {
private boolean importBackup(Uri uri, String password) {
Log.d(Config.LOGTAG, "importing backup from " + uri);
- if (password == null || password.isEmpty()) {
- synchronized (mOnBackupProcessedListeners) {
- for (OnBackupProcessed l : mOnBackupProcessedListeners) {
- l.onBackupDecryptionFailed();
- }
- }
- return false;
- }
try {
SQLiteDatabase db = mDatabaseBackend.getWritableDatabase();
final InputStream inputStream;
diff --git a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java
index bca907b33..d6dbfd222 100644
--- a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java
+++ b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java
@@ -2,6 +2,7 @@ package eu.siacs.conversations.ui;
import android.content.ComponentName;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.databinding.DataBindingUtil;
@@ -140,23 +141,32 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo
finish();
}
});
- builder.setPositiveButton(R.string.restore, (dialog, which) -> {
- final String password = enterPasswordBinding.accountPassword.getEditableText().toString();
- final Uri uri = backupFile.getUri();
- Intent intent = new Intent(this, ImportBackupService.class);
- intent.setAction(Intent.ACTION_SEND);
- intent.putExtra("password", password);
- if ("file".equals(uri.getScheme())) {
- intent.putExtra("file", uri.getPath());
- } else {
- intent.setData(uri);
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- }
- setLoadingState(true);
- ContextCompat.startForegroundService(this, intent);
- });
+ builder.setPositiveButton(R.string.restore, null);
builder.setCancelable(false);
- builder.create().show();
+ final AlertDialog dialog = builder.create();
+ dialog.setOnShowListener((d) -> {
+ dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> {
+ final String password = enterPasswordBinding.accountPassword.getEditableText().toString();
+ if (password.isEmpty()) {
+ enterPasswordBinding.accountPasswordLayout.setError(getString(R.string.please_enter_password));
+ return;
+ }
+ final Uri uri = backupFile.getUri();
+ Intent intent = new Intent(this, ImportBackupService.class);
+ intent.setAction(Intent.ACTION_SEND);
+ intent.putExtra("password", password);
+ if ("file".equals(uri.getScheme())) {
+ intent.putExtra("file", uri.getPath());
+ } else {
+ intent.setData(uri);
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ }
+ setLoadingState(true);
+ ContextCompat.startForegroundService(this, intent);
+ d.dismiss();
+ });
+ });
+ dialog.show();
}
private void setLoadingState(final boolean loadingState) {
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 08f9b02e0..8a8d31757 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -874,4 +874,5 @@
Open backup
The file you selected is not a Conversations backup file
This account has already been setup
+ Please enter the password for this account