private static IShortcutBadger GetShortcutBadger(Context context) { if (_mShortcutBadger != null) { return(_mShortcutBadger); } Log.Debug(LogTag, "Finding badger"); //find the home launcher Package try { var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryHome); var resolveInfo = context.PackageManager.ResolveActivity(intent, PackageInfoFlags.MatchDefaultOnly); var currentHomePackage = resolveInfo.ActivityInfo.PackageName; if (Build.Manufacturer.Equals("xiaomi")) { _mShortcutBadger = new XiaomiHomeBadger(context); return(_mShortcutBadger); } foreach (var badgeImplementation in _badgeImplementations) { var instanse = (IShortcutBadger)Activator.CreateInstance(badgeImplementation, context); if (instanse.SupportLaunchers.Contains(currentHomePackage)) { _mShortcutBadger = instanse; break; } } } catch (Exception e) { Log.Error(LogTag, e.Message, e); } if (_mShortcutBadger == null) { _mShortcutBadger = new DefaultBadger(context); } Log.Debug(LogTag, "Returning badger:" + _mShortcutBadger.GetType()); return(_mShortcutBadger); }
/// <summary> /// Initialize Badger if a launcher is availalble (eg. set as default on the device) /// </summary> /// <param name="context"></param> /// <returns> /// Returns true if a launcher is available, in this case, the Badger will be set and _sShortcutBadger will be non null. /// </returns> private static bool InitBadger(Context context) { Intent launchIntent = context.PackageManager.GetLaunchIntentForPackage(context.PackageName); if (launchIntent == null) { Log.Error(LogTag, "Unable to find launch intent for package " + context.PackageName); return(false); } _sComponentName = launchIntent.Component; var intent = new Intent(Intent.ActionMain); intent.AddCategory(Intent.CategoryHome); var resolveInfo = context.PackageManager.ResolveActivity(intent, PackageInfoFlags.MatchDefaultOnly); if (resolveInfo == null || resolveInfo.ActivityInfo.Name.ToLower().Contains("resolver")) { return(false); } var currentHomePackage = resolveInfo.ActivityInfo.PackageName; foreach (var badger in Badgers) { IShortcutBadger shortcutBadger = null; try { shortcutBadger = (IShortcutBadger)Activator.CreateInstance(badger); } catch (Exception) { // ignored } if (shortcutBadger != null && shortcutBadger.SupportLaunchers.Contains(currentHomePackage)) { _sShortcutBadger = shortcutBadger; break; } } if (_sShortcutBadger == null) { if (Build.Manufacturer.Equals("ZUK", StringComparison.CurrentCultureIgnoreCase)) { _sShortcutBadger = new ZukHomeBadger(); } else if (Build.Manufacturer.Equals("OPPO", StringComparison.CurrentCultureIgnoreCase)) { _sShortcutBadger = new OPPOHomeBader(); } else if (Build.Manufacturer.Equals("VIVO", StringComparison.CurrentCultureIgnoreCase)) { _sShortcutBadger = new VivoHomeBadger(); } else if (Build.Manufacturer.Equals("ZTE", StringComparison.CurrentCultureIgnoreCase)) { _sShortcutBadger = new ZTEHomeBadger(); } else { _sShortcutBadger = new DefaultBadger(); } } return(true); }