Пример #1
0
        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);
        }