diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 83ec8c1e..5c4f3b45 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,9 +52,8 @@ - + - diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index a860bd5a..1c75cc2b 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -457,46 +457,53 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene intent.removeExtra("action"); } - private void handleDeeplink() { + private void handleIncomingIntent() { if (!_vaultManager.isVaultLoaded()) { return; } Intent intent = getIntent(); - Uri uri = intent.getData(); - if (Intent.ACTION_VIEW.equals(intent.getAction()) && uri != null) { - intent.setData(null); - intent.setAction(null); - - GoogleAuthInfo info = null; - try { - info = GoogleAuthInfo.parseUri(uri); - } catch (GoogleAuthInfoException e) { - e.printStackTrace(); - Dialogs.showErrorDialog(this, R.string.unable_to_process_deeplink, e); - } - - if (info != null) { - VaultEntry entry = new VaultEntry(info); - startEditEntryActivityForNew(CODE_ADD_ENTRY, entry); - } - } - } - - private void handleSharedImage() { - if (!_vaultManager.isVaultLoaded()) { + if (intent.getAction() == null) { return; } - Intent intent = getIntent(); - String action = intent.getAction(); - Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM); + Uri uri; + switch (intent.getAction()) { + case Intent.ACTION_VIEW: + uri = intent.getData(); + if (uri != null) { + intent.setData(null); + intent.setAction(null); - if (Intent.ACTION_SEND.equals(action) && uri != null) { - intent.setAction(null); - intent.removeExtra(Intent.EXTRA_STREAM); + GoogleAuthInfo info; + try { + info = GoogleAuthInfo.parseUri(uri); + } catch (GoogleAuthInfoException e) { + e.printStackTrace(); + Dialogs.showErrorDialog(this, R.string.unable_to_process_deeplink, e); + break; + } - startDecodeQrCodeImages(Collections.singletonList(uri)); + VaultEntry entry = new VaultEntry(info); + startEditEntryActivityForNew(CODE_ADD_ENTRY, entry); + } + break; + case Intent.ACTION_SEND: + uri = intent.getParcelableExtra(Intent.EXTRA_STREAM); + if (uri != null) { + intent.setAction(null); + intent.removeExtra(Intent.EXTRA_STREAM); + startDecodeQrCodeImages(Collections.singletonList(uri)); + } + break; + case Intent.ACTION_SEND_MULTIPLE: + List uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); + if (uris != null) { + intent.setAction(null); + intent.removeExtra(Intent.EXTRA_STREAM); + startDecodeQrCodeImages(uris); + } + break; } } @@ -534,8 +541,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene checkTimeSyncSetting(); } - handleDeeplink(); - handleSharedImage(); + handleIncomingIntent(); updateLockIcon(); doShortcutActions(); updateErrorBar();