diff --git a/src/keepass2android/ChangeLog.cs b/src/keepass2android/ChangeLog.cs index 26e6d485..1a7ddaef 100644 --- a/src/keepass2android/ChangeLog.cs +++ b/src/keepass2android/ChangeLog.cs @@ -26,7 +26,9 @@ namespace keepass2android AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(ctx, Android.Resource.Style.ThemeHoloLightDialog)); builder.SetTitle(ctx.GetString(Resource.String.ChangeLog_title)); List changeLog = new List{ - ctx.GetString(Resource.String.ChangeLog_1_05), + + ctx.GetString(Resource.String.ChangeLog_1_05), + ctx.GetString(Resource.String.ChangeLog_1_04b), ctx.GetString(Resource.String.ChangeLog_1_04), ctx.GetString(Resource.String.ChangeLog_1_03), ctx.GetString(Resource.String.ChangeLog_1_02), diff --git a/src/keepass2android/GroupBaseActivity.cs b/src/keepass2android/GroupBaseActivity.cs index 5c82fddd..6d5e2bce 100644 --- a/src/keepass2android/GroupBaseActivity.cs +++ b/src/keepass2android/GroupBaseActivity.cs @@ -319,7 +319,23 @@ namespace keepass2android { var intent = new Intent(Settings.ActionRequestSetAutofillService); intent.SetData(Android.Net.Uri.Parse("package:" + PackageName)); - StartActivity(intent); + try + { + StartActivity(intent); + } + catch (ActivityNotFoundException e) + { + //this exception was reported by many Huawei users + Kp2aLog.LogUnexpectedError(e); + new AlertDialog.Builder(this) + .SetTitle(Resource.String.autofill_enable) + .SetMessage(Resource.String.autofill_enable_failed) + .SetPositiveButton(Resource.String.ok, (o, eventArgs) => { }) + .Show(); + const string autofillservicewasenabled = "AutofillServiceWasEnabled"; + _prefs.Edit().PutBoolean(autofillservicewasenabled, true).Commit(); + UpdateBottomBarElementVisibility(Resource.Id.autofill_infotext, false); + } }; } diff --git a/src/keepass2android/Resources/values/strings.xml b/src/keepass2android/Resources/values/strings.xml index cec97919..c0112240 100644 --- a/src/keepass2android/Resources/values/strings.xml +++ b/src/keepass2android/Resources/values/strings.xml @@ -722,11 +722,18 @@ * add some info texts to avoid some common misunderstandings\n * bug fixes\n + + + Version 1.04b\n + * Avoid crash when user tries to enable Autofill on Huawei devices.\n + Version 1.04\n * Added Autofill service for Android 8.0 and later.\n * Upgraded libraries, build tools and Target SDK version.\n + + Version 1.03\n @@ -1072,6 +1079,7 @@ Initial public release Keepass2Android supports Android\'s Autofill feature but it looks like you haven\'t enabled it yet. Enable Autofill + Sorry, it looks like your device does not support opening the settings from inside the app. Please go manually to the system settings for AutoFill to enable the service. Show Autofill help Fill with Keepass2Android Could not associate web domain %1$s with app %2$s diff --git a/src/keepass2android/settings/DatabaseSettingsActivity.cs b/src/keepass2android/settings/DatabaseSettingsActivity.cs index 2cb3adea..2788df73 100644 --- a/src/keepass2android/settings/DatabaseSettingsActivity.cs +++ b/src/keepass2android/settings/DatabaseSettingsActivity.cs @@ -378,6 +378,32 @@ namespace keepass2android UpdateAutofillPref(); + var autofillPref = FindPreference(GetString(Resource.String.AutoFill_prefs_key)); + if (autofillPref != null) + { + autofillPref.PreferenceClick += (sender, args) => + { + + var intent = new Intent(Settings.ActionRequestSetAutofillService); + intent.SetData(Android.Net.Uri.Parse("package:" + Context.PackageName)); + try + { + Context.StartActivity(intent); + } + catch (ActivityNotFoundException e) + { + //this exception was reported by many Huawei users + Kp2aLog.LogUnexpectedError(e); + new AlertDialog.Builder(Context) + .SetTitle(Resource.String.autofill_enable) + .SetMessage(Resource.String.autofill_enable_failed) + .SetPositiveButton(Resource.String.ok, (o, eventArgs) => { }) + .Show(); + + } + }; + } + PrepareNoDonatePreference(Activity, FindPreference(GetString(Resource.String.NoDonateOption_key))); PrepareNoDonationReminderPreference(Activity, ((PreferenceScreen)FindPreference(GetString(Resource.String.display_prefs_key))), FindPreference(GetString(Resource.String.NoDonationReminder_key))); @@ -501,8 +527,11 @@ namespace keepass2android else { autofillPref.Summary = Activity.GetString(Resource.String.not_enabled); - autofillPref.Intent = new Intent(Settings.ActionRequestSetAutofillService); - autofillPref.Intent.SetData(Android.Net.Uri.Parse("package:" + Activity.PackageName)); + + + + + } } @@ -1005,7 +1034,9 @@ namespace keepass2android } - /// + + + /// /// Activity to configure the application and database settings. The database must be unlocked, and this activity will close if it becomes locked. /// [Activity(Label = "@string/app_name", Theme = "@style/MyTheme")]