From 1a6ea7d5144267f5e5c6203ecd69768772924a11 Mon Sep 17 00:00:00 2001 From: Marc Schwede <9077622+schwedenmut@users.noreply.github.com> Date: Thu, 3 Oct 2019 09:04:44 +0200 Subject: [PATCH] Implemented intent-filter to receive otpauth requests --- app/src/main/AndroidManifest.xml | 7 ++++++ .../andotp/Activities/MainActivity.java | 24 +++++++++++++++---- app/src/main/res/values/strings_main.xml | 4 +++- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5c6d57ba..42208050 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,6 +27,13 @@ + + + + + + + diff --git a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java index b7de7cd9..06c6b937 100644 --- a/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java +++ b/app/src/main/java/org/shadowice/flocke/andotp/Activities/MainActivity.java @@ -277,18 +277,33 @@ public class MainActivity extends BaseActivity setupDrawer(); + checkIntent(); + + if (savedInstanceState != null){ + setFilterString(savedInstanceState.getString("filterString", "")); + } + } + + private void checkIntent() { Intent callingIntent = getIntent(); if (callingIntent != null && callingIntent.getAction() != null) { if (callingIntent.getAction().equals(INTENT_SCAN_QR)) { scanQRCode(); } else if (callingIntent.getAction().equals(INTENT_ENTER_DETAILS)) { ManualEntryDialog.show(MainActivity.this, settings, adapter); + } else if (callingIntent.getAction().equals(Intent.ACTION_VIEW) && !requireAuthentication) { + try { + Entry entry = new Entry(getIntent().getDataString()); + entry.updateOTP(); + entry.setLastUsed(System.currentTimeMillis()); + adapter.addEntry(entry); + adapter.saveEntries(); + Toast.makeText(this, R.string.toast_intent_creation_succeeded, Toast.LENGTH_LONG).show(); + } catch (Exception e) { + Toast.makeText(this, R.string.toast_intent_creation_failed, Toast.LENGTH_LONG).show(); + } } } - - if (savedInstanceState != null){ - setFilterString(savedInstanceState.getString("filterString", "")); - } } @Override @@ -321,6 +336,7 @@ public class MainActivity extends BaseActivity updateEncryption(null); } else { populateAdapter(); + checkIntent(); } } } diff --git a/app/src/main/res/values/strings_main.xml b/app/src/main/res/values/strings_main.xml index 68e730e9..6aba68ca 100644 --- a/app/src/main/res/values/strings_main.xml +++ b/app/src/main/res/values/strings_main.xml @@ -10,7 +10,7 @@ Settings All tags No tags - + %d s @@ -59,6 +59,8 @@ This entry already exists Invalid QR Code Encryption key not loaded + Invalid intent-provided code + Intent-provided code added Authenticate