From 3b559370858c268945bb25df853736d32b6fda1e Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Fri, 22 Feb 2019 15:10:07 +0100 Subject: [PATCH] Fix keyboard entry selection --- app/src/main/AndroidManifest.xml | 10 ++++++---- .../keepass/activities/GroupActivity.java | 20 +++++++++---------- .../fileselect/FileSelectActivity.java | 1 + .../keepass/magikeyboard/MagikIME.java | 6 +++++- .../keepass/password/PasswordActivity.java | 2 ++ .../keepass/selection/EntrySelectionHelper.kt | 2 +- 6 files changed, 25 insertions(+), 16 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b887db2a2..4f111ac2b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,10 +38,6 @@ - + + + diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.java b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.java index 21cba3852..a7c88b8a1 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.java +++ b/app/src/main/java/com/kunzisoft/keepass/activities/GroupActivity.java @@ -186,9 +186,8 @@ public class GroupActivity extends LockingActivity public static void launchForKeyboardSelection(Activity activity, PwGroup group, boolean readOnly) { // TODO implement pre search to directly open the direct group TimeoutHelper.INSTANCE.recordTime(activity); - buildAndLaunchIntent(activity, group, readOnly, (intent) -> { - KeyboardHelper.INSTANCE.startActivityForKeyboardSelection(activity, intent); - }); + buildAndLaunchIntent(activity, group, readOnly, + (intent) -> KeyboardHelper.INSTANCE.startActivityForKeyboardSelection(activity, intent)); } /* @@ -206,16 +205,15 @@ public class GroupActivity extends LockingActivity public static void launchForAutofillResult(Activity activity, PwGroup group, @NonNull AssistStructure assistStructure, boolean readOnly) { // TODO implement pre search to directly open the direct group TimeoutHelper.INSTANCE.recordTime(activity); - buildAndLaunchIntent(activity, group, readOnly, (intent) -> { - AutofillHelper.INSTANCE.startActivityForAutofillResult(activity, intent, assistStructure); - }); + buildAndLaunchIntent(activity, group, readOnly, + (intent) -> AutofillHelper.INSTANCE.startActivityForAutofillResult(activity, intent, assistStructure)); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if ( isFinishing() ) { + if (isFinishing()) { return; } @@ -510,10 +508,11 @@ public class GroupActivity extends LockingActivity MagikIME.setEntryKey(entry.getEntry()); // Show the notification if allowed in Preferences if (PreferencesUtil.enableKeyboardNotificationEntry(GroupActivity.this)) { - Intent notificationIntent = new Intent(GroupActivity.this, KeyboardEntryNotificationService.class); - startService(notificationIntent); + startService(new Intent( + GroupActivity.this, + KeyboardEntryNotificationService.class)); } - moveTaskToBack(true); + finish(); return null; }, assistStructure -> { @@ -921,6 +920,7 @@ public class GroupActivity extends LockingActivity KeyboardHelper.INSTANCE.startActivityForKeyboardSelection( GroupActivity.this, searchIntent); + finish(); return null; }, assistStructure -> { diff --git a/app/src/main/java/com/kunzisoft/keepass/fileselect/FileSelectActivity.java b/app/src/main/java/com/kunzisoft/keepass/fileselect/FileSelectActivity.java index d1b9115e0..c9abd1741 100644 --- a/app/src/main/java/com/kunzisoft/keepass/fileselect/FileSelectActivity.java +++ b/app/src/main/java/com/kunzisoft/keepass/fileselect/FileSelectActivity.java @@ -261,6 +261,7 @@ public class FileSelectActivity extends StylishActivity implements try { PasswordActivity.launchForKeyboardResult(FileSelectActivity.this, fileName, keyFile); + finish(); } catch (FileNotFoundException e) { fileNoFoundAction(e); } diff --git a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java index 5b8bb8dba..f8312a05c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java +++ b/app/src/main/java/com/kunzisoft/keepass/magikeyboard/MagikIME.java @@ -204,8 +204,12 @@ public class MagikIME extends InputMethodService // TODO Unlock key break; case KEY_ENTRY: - deleteEntryKey(this); + // Stop current service and reinit entry + stopService(new Intent(this, KeyboardEntryNotificationService.class)); + entryKey = null; Intent intent = new Intent(this, KeyboardLauncherActivity.class); + // New task needed because don't launch from an Activity context + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); break; case KEY_LOCK: diff --git a/app/src/main/java/com/kunzisoft/keepass/password/PasswordActivity.java b/app/src/main/java/com/kunzisoft/keepass/password/PasswordActivity.java index b0b1bebbf..04170ec9a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/password/PasswordActivity.java +++ b/app/src/main/java/com/kunzisoft/keepass/password/PasswordActivity.java @@ -952,6 +952,8 @@ public class PasswordActivity extends StylishActivity }, () -> { GroupActivity.launchForKeyboardSelection(PasswordActivity.this, readOnly); + // Do not keep history + finish(); return null; }, assistStructure -> { diff --git a/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.kt b/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.kt index 3625fdd56..b65011149 100644 --- a/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.kt +++ b/app/src/main/java/com/kunzisoft/keepass/selection/EntrySelectionHelper.kt @@ -26,7 +26,7 @@ object EntrySelectionHelper { } if (assistStructure == null) { if (intent.getBooleanExtra(EXTRA_ENTRY_SELECTION_MODE, false)) { - intent.putExtra(EXTRA_ENTRY_SELECTION_MODE, false) + intent.removeExtra(EXTRA_ENTRY_SELECTION_MODE) keyboardAction.invoke() } else { standardAction.invoke()