diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/org/thoughtcrime/securesms/WelcomeActivity.java index abf5b49c4..1b1fcaaaf 100644 --- a/src/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/org/thoughtcrime/securesms/WelcomeActivity.java @@ -50,6 +50,7 @@ import java.io.InputStream; import java.io.OutputStream; public class WelcomeActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate { + public static final String BACKUP_QR_EXTRA = "backup_qr_extra"; public static final int PICK_BACKUP = 20574; private final static String TAG = WelcomeActivity.class.getSimpleName(); public static final String TMP_BACKUP_FILE = "tmp-backup-file"; @@ -138,6 +139,16 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen setIntent(intent); } + @Override + public void onStart() { + super.onStart(); + String backupQr = getIntent().getStringExtra(BACKUP_QR_EXTRA); + if (backupQr != null) { + getIntent().removeExtra(BACKUP_QR_EXTRA); + startQrAccountCreation(backupQr); + } + } + @Override public void onDestroy() { super.onDestroy(); diff --git a/src/org/thoughtcrime/securesms/connect/AccountManager.java b/src/org/thoughtcrime/securesms/connect/AccountManager.java index 649c79331..7014cc0c3 100644 --- a/src/org/thoughtcrime/securesms/connect/AccountManager.java +++ b/src/org/thoughtcrime/securesms/connect/AccountManager.java @@ -8,6 +8,7 @@ import android.content.Intent; import android.preference.PreferenceManager; import android.util.Log; +import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import com.b44t.messenger.DcAccounts; @@ -116,6 +117,10 @@ public class AccountManager { } public void switchAccountAndStartActivity(Activity activity, int destAccountId) { + switchAccountAndStartActivity(activity, destAccountId, null); + } + + private void switchAccountAndStartActivity(Activity activity, int destAccountId, @Nullable String backupQr) { if (destAccountId==0) { beginAccountCreation(activity); } else { @@ -125,6 +130,9 @@ public class AccountManager { activity.finishAffinity(); if (destAccountId==0) { Intent intent = new Intent(activity, WelcomeActivity.class); + if (backupQr != null) { + intent.putExtra(WelcomeActivity.BACKUP_QR_EXTRA, backupQr); + } activity.startActivity(intent); } else { activity.startActivity(new Intent(activity.getApplicationContext(), ConversationListActivity.class)); @@ -167,4 +175,8 @@ public class AccountManager { intent.putExtra(InstantOnboardingActivity.QR_ACCOUNT_EXTRA, qr); activity.startActivity(intent); } + + public void addAccountFromSecondDevice(Activity activity, String backupQr) { + switchAccountAndStartActivity(activity, 0, backupQr); + } } diff --git a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java b/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java index 841254ada..34a0361bc 100644 --- a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java +++ b/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java @@ -79,7 +79,7 @@ public class QrCodeHandler { builder.setTitle(R.string.multidevice_receiver_title); builder.setMessage(activity.getString(R.string.multidevice_receiver_scanning_ask) + "\n\n" + activity.getString(R.string.multidevice_same_network_hint)); builder.setPositiveButton(R.string.perm_continue, (dialog, which) -> { - AccountManager.getInstance().addAccountFromQr(activity, rawString); + AccountManager.getInstance().addAccountFromSecondDevice(activity, rawString); }); builder.setNegativeButton(R.string.cancel, null); builder.setCancelable(false);