diff --git a/docs/Available-Plug-ins.md b/docs/Available-Plug-ins.md index c0c2935b..f78c8557 100644 --- a/docs/Available-Plug-ins.md +++ b/docs/Available-Plug-ins.md @@ -8,7 +8,7 @@ Allows to switch input method automatically on non-rooted devices. # AutoFill Plug-in Uses Android Accessibility Service to provide an option to AutoFill forms (e.g. on Chrome) or any Android app. -[https://philippc.github.io/keepass2android/AccServiceAutoFill.md] +[https://philippc.github.io/keepass2android/AccServiceAutoFill.html] # InputStick Plug-in Allows to send text from KP2A via InputStick to your PC. diff --git a/src/java/Kp2aAccServiceLib/app/src/main/java/keepass2android/autofill/AutoFillService.java b/src/java/Kp2aAccServiceLib/app/src/main/java/keepass2android/autofill/AutoFillService.java index 21d0d4bc..074d37fb 100644 --- a/src/java/Kp2aAccServiceLib/app/src/main/java/keepass2android/autofill/AutoFillService.java +++ b/src/java/Kp2aAccServiceLib/app/src/main/java/keepass2android/autofill/AutoFillService.java @@ -11,6 +11,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; +import android.util.Log; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; @@ -29,7 +30,7 @@ import keepass2android.kbbridge.KeyboardData; public class AutoFillService extends AccessibilityService { - private static boolean _hasUsedData = false; + private static boolean _hasUsedData = true; private static String _lastSearchUrl; private static final String _logTag = "KP2AAF"; private static boolean _isRunning; @@ -193,6 +194,7 @@ public class AutoFillService extends AccessibilityService { if (ExistsNodeOrChildren(root, new PasswordFieldCondition())) { if ((getLastReceivedCredentialsUser() != null) && + (!_hasUsedData) && (Objects.equals(url, _lastSearchUrl) || isSame(getCredentialsField("URL"), url))) { @@ -313,6 +315,7 @@ public class AutoFillService extends AccessibilityService { @TargetApi(21) private void FillPassword(String url, AccessibilityNodeInfo usernameEdit, List passwordFields) { + Log.d(_logTag, "_hasUsedData = " + _hasUsedData); if ((keepass2android.kbbridge.KeyboardData.hasData()) && (_hasUsedData == false)) { fillDataInTextField(usernameEdit, getLastReceivedCredentialsUser()); diff --git a/src/keepass2android/Properties/AndroidManifest_debug.xml b/src/keepass2android/Properties/AndroidManifest_debug.xml index 8f4bc999..fa4d8262 100644 --- a/src/keepass2android/Properties/AndroidManifest_debug.xml +++ b/src/keepass2android/Properties/AndroidManifest_debug.xml @@ -55,18 +55,6 @@ - - - - - - - - @@ -129,6 +117,5 @@ - \ No newline at end of file diff --git a/src/keepass2android/Properties/AndroidManifest_net.xml b/src/keepass2android/Properties/AndroidManifest_net.xml index b92455e5..28f62d4f 100644 --- a/src/keepass2android/Properties/AndroidManifest_net.xml +++ b/src/keepass2android/Properties/AndroidManifest_net.xml @@ -140,7 +140,6 @@ - diff --git a/src/keepass2android/Properties/AndroidManifest_nonet.xml b/src/keepass2android/Properties/AndroidManifest_nonet.xml index 0ef55589..9c07cdf9 100644 --- a/src/keepass2android/Properties/AndroidManifest_nonet.xml +++ b/src/keepass2android/Properties/AndroidManifest_nonet.xml @@ -116,7 +116,7 @@ - + diff --git a/src/keepass2android/QueryCredentialsActivity.cs b/src/keepass2android/QueryCredentialsActivity.cs index 4378e0e6..e2c0c53d 100644 --- a/src/keepass2android/QueryCredentialsActivity.cs +++ b/src/keepass2android/QueryCredentialsActivity.cs @@ -102,6 +102,18 @@ namespace keepass2android } } + protected override void OnStart() + { + base.OnStart(); + Kp2aLog.Log("Starting QueryCredentialsActivity"); + } + + protected override void OnResume() + { + base.OnResume(); + Kp2aLog.Log("Resuming QueryCredentialsActivity"); + } + private void ShowToast() { string pluginDisplayName = _pluginPackage; diff --git a/src/keepass2android/pluginhost/PluginArrayAdapter.cs b/src/keepass2android/pluginhost/PluginArrayAdapter.cs index 4b73ffe8..091ecdc1 100644 --- a/src/keepass2android/pluginhost/PluginArrayAdapter.cs +++ b/src/keepass2android/pluginhost/PluginArrayAdapter.cs @@ -1,3 +1,4 @@ +using System; using Android.Content.PM; using Android.Content.Res; using Android.Graphics.Drawables; @@ -6,6 +7,7 @@ using Android.Content; using Android.Views; using System.Collections.Generic; using Android.App; +using Android.Runtime; namespace keepass2android { @@ -80,6 +82,11 @@ namespace keepass2android int layoutResourceId; IList data = null; + public PluginArrayAdapter(IntPtr javaReference, JniHandleOwnership transfer) + : base(javaReference, transfer) + { + } + public PluginArrayAdapter(Context context, int layoutResourceId, IList data) : base(context, layoutResourceId, data) { diff --git a/src/keepass2android/pluginhost/PluginDatabase.cs b/src/keepass2android/pluginhost/PluginDatabase.cs index 49e7582e..e329da9b 100644 --- a/src/keepass2android/pluginhost/PluginDatabase.cs +++ b/src/keepass2android/pluginhost/PluginDatabase.cs @@ -132,7 +132,7 @@ namespace keepass2android i.PutExtra(Strings.ExtraSender, _ctx.PackageName); i.PutExtra(Strings.ExtraRequestToken, GetPreferencesForPlugin(pluginPackage).GetString(_requesttoken, null)); _ctx.SendBroadcast(i); - StorePlugin(pluginPackage, null, new List()); + StorePlugin(pluginPackage, null, GetPluginScopes(pluginPackage)); } } diff --git a/src/keepass2android/pluginhost/PluginDetailsActivity.cs b/src/keepass2android/pluginhost/PluginDetailsActivity.cs index 6f190c13..c79a639e 100644 --- a/src/keepass2android/pluginhost/PluginDetailsActivity.cs +++ b/src/keepass2android/pluginhost/PluginDetailsActivity.cs @@ -117,7 +117,7 @@ namespace keepass2android private void UpdateView() { var scopesContainer = FindViewById(Resource.Id.scopes_list); - //scopesContainer.RemoveAllViews(); + scopesContainer.RemoveAllViews(); var pluginDb = new PluginDatabase(this); _checkbox.Checked = pluginDb.IsEnabled(_pluginPackageName); diff --git a/src/keepass2android/pluginhost/PluginHost.cs b/src/keepass2android/pluginhost/PluginHost.cs index a4849747..ac22ff04 100644 --- a/src/keepass2android/pluginhost/PluginHost.cs +++ b/src/keepass2android/pluginhost/PluginHost.cs @@ -72,13 +72,14 @@ namespace keepass2android PluginDatabase pluginDb = new PluginDatabase(context); if (intent.Action == Strings.ActionRequestAccess) { - var senderPackage = intent.GetStringExtra(Strings.ExtraSender); - var requestToken = intent.GetStringExtra(Strings.ExtraRequestToken); + string senderPackage = intent.GetStringExtra(Strings.ExtraSender); + string requestToken = intent.GetStringExtra(Strings.ExtraRequestToken); - var requestedScopes = intent.GetStringArrayListExtra(Strings.ExtraScopes); + IList requestedScopes = intent.GetStringArrayListExtra(Strings.ExtraScopes); if (!AreScopesValid(requestedScopes)) { + Log.Debug(_tag, "requested scopes not valid"); return; } diff --git a/src/keepass2android/pluginhost/PluginListActivity.cs b/src/keepass2android/pluginhost/PluginListActivity.cs index b2c363f6..125f4266 100644 --- a/src/keepass2android/pluginhost/PluginListActivity.cs +++ b/src/keepass2android/pluginhost/PluginListActivity.cs @@ -44,7 +44,7 @@ namespace keepass2android } protected override void OnResume() { - base.OnResume(); + PluginDatabase pluginDb = new PluginDatabase(this); _items = (from pluginPackage in pluginDb.GetAllPluginPackages() @@ -59,6 +59,13 @@ namespace keepass2android * */ _pluginArrayAdapter = new PluginArrayAdapter(this, Resource.Layout.ListViewPluginRow, _items); ListAdapter = _pluginArrayAdapter; + base.OnResume(); + } + + protected override void OnPause() + { + base.OnPause(); + ListAdapter = _pluginArrayAdapter = null; } } } \ No newline at end of file