bitwarden-android/src/Android/Services/AppInfoService.cs

42 lines
1.6 KiB
C#
Raw Normal View History

using Android.App;
2017-11-28 01:27:11 +03:00
using Android.Views.Autofill;
using Bit.App.Abstractions;
using Plugin.CurrentActivity;
using System.Linq;
using AndroidApp = Android.App.Application;
namespace Bit.Android.Services
{
public class AppInfoService : IAppInfoService
{
public string Version => AndroidApp.Context.ApplicationContext.PackageManager
.GetPackageInfo(AndroidApp.Context.PackageName, 0).VersionName;
public string Build => AndroidApp.Context.ApplicationContext.PackageManager
.GetPackageInfo(AndroidApp.Context.PackageName, 0).VersionCode.ToString();
2017-02-01 08:38:35 +03:00
2017-11-28 01:27:11 +03:00
public bool AutofillAccessibilityServiceEnabled => AutofillAccessibilityRunning();
public bool AutofillServiceEnabled => AutofillEnabled();
2017-11-28 01:27:11 +03:00
private bool AutofillAccessibilityRunning()
{
var manager = ((ActivityManager)CrossCurrentActivity.Current.Activity.GetSystemService("activity"));
var services = manager.GetRunningServices(int.MaxValue);
return services.Any(s => s.Process.ToLowerInvariant().Contains("bitwarden") &&
s.Service.ClassName.ToLowerInvariant().Contains("autofill"));
}
2017-11-28 01:27:11 +03:00
private bool AutofillEnabled()
{
if(global::Android.OS.Build.VERSION.SdkInt < global::Android.OS.BuildVersionCodes.O)
{
return false;
}
var activity = (MainActivity)CrossCurrentActivity.Current.Activity;
2017-11-28 01:27:11 +03:00
var afm = (AutofillManager)activity.GetSystemService(Java.Lang.Class.FromType(typeof(AutofillManager)));
2017-12-23 02:34:46 +03:00
return afm.IsEnabled && afm.HasEnabledAutofillServices;
2017-11-28 01:27:11 +03:00
}
}
}