From d53ea584ba01923d58af54c0bfe3152ed67466ec Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Fri, 17 Feb 2017 23:22:02 -0500 Subject: [PATCH] Better way of checking for autofill sevrice running --- src/Android/AutofillService.cs | 14 -------------- src/Android/Services/AppInfoService.cs | 14 ++++++++++++-- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/Android/AutofillService.cs b/src/Android/AutofillService.cs index bb7eaa5cf..5e10cc9c5 100644 --- a/src/Android/AutofillService.cs +++ b/src/Android/AutofillService.cs @@ -19,7 +19,6 @@ namespace Bit.Android private const string BitwardenPackage = "com.x8bit.bitwarden"; private const string BitwardenWebsite = "bitwarden.com"; - public static bool Enabled { get; set; } = false; private static Dictionary SupportedBrowsers => new List { new Browser("com.android.chrome", "url_bar"), @@ -54,7 +53,6 @@ namespace Bit.Android public override void OnAccessibilityEvent(AccessibilityEvent e) { - Enabled = true; var root = RootInActiveWindow; if(string.IsNullOrWhiteSpace(e.PackageName) || e.PackageName == SystemUiPackage || root?.PackageName != e.PackageName) @@ -116,18 +114,6 @@ namespace Bit.Android } - protected override void OnServiceConnected() - { - base.OnServiceConnected(); - Enabled = true; - } - - public override void OnDestroy() - { - base.OnDestroy(); - Enabled = false; - } - private void CancelNotification() { var notificationManager = ((NotificationManager)GetSystemService(NotificationService)); diff --git a/src/Android/Services/AppInfoService.cs b/src/Android/Services/AppInfoService.cs index 85a87eb17..c46f79714 100644 --- a/src/Android/Services/AppInfoService.cs +++ b/src/Android/Services/AppInfoService.cs @@ -1,4 +1,6 @@ -using Bit.App.Abstractions; +using Android.App; +using Bit.App.Abstractions; +using System.Linq; using AndroidApp = Android.App.Application; namespace Bit.Android.Services @@ -11,6 +13,14 @@ namespace Bit.Android.Services public string Build => AndroidApp.Context.ApplicationContext.PackageManager .GetPackageInfo(AndroidApp.Context.PackageName, 0).VersionCode.ToString(); - public bool AutofillServiceEnabled => AutofillService.Enabled; + public bool AutofillServiceEnabled => AutofillRunning(); + + private bool AutofillRunning() + { + var manager = ((ActivityManager)Xamarin.Forms.Forms.Context.GetSystemService("activity")); + var services = manager.GetRunningServices(int.MaxValue); + return services.Any(s => s.Process.ToLowerInvariant().Contains("bitwarden") && + s.Service.ClassName.ToLowerInvariant().Contains("autofill")); + } } }