【问题标题】:How to install icon pack on custom launcher?如何在自定义启动器上安装图标包?
【发布时间】:2017-03-12 19:16:22
【问题描述】:

我正在尝试在我的自定义启动器上安装图标包,我已阅读此注释 How to install icon pack 但我无法理解如何使用该类,这就是我所做的:

IconPackManager ic = new IconPackManager();
HashMap<String, IconPackManager.IconPack> map = new HashMap<String, IconPackManager.IconPack>(ic.getAvailableIconPacks(false));
Iterator it = map.entrySet().iterator();
Drawable d = null;
String packName = null;
IconPackManager.IconPack packIcon = null;
    while (it.hasNext()) {
       Map.Entry pair = (Map.Entry)it.next();
       packName = (String)pair.getKey();
       packIcon = (IconPackManager.IconPack)pair.getValue();
       d = packIcon.getDrawableIconForPackage(packName, iconDrawable);
       setIcon(d);
    }

【问题讨论】:

  • IconPackManager 不是标准的 Android 类。此类的来源/库信息在哪里?
  • 上...点击如何安装图标包

标签: java android android-launcher


【解决方案1】:

解决了这个问题:

String packName = null;
IconPackManager.IconPack packIcon = null;

IconPackManager ic = new IconPackManager();
HashMap<String, IconPackManager.IconPack> map = ic.getAvailableIconPacks(true);
Iterator it = map.entrySet().iterator();


        while (it.hasNext()) {
            Map.Entry pair = (Map.Entry)it.next();
            packName = (String)pair.getKey(); //Get icon pack name (app package)

            packIcon = (IconPackManager.IconPack)pair.getValue(); //Get icons

            if(packIcon.getDrawableIconForPackage("YourTargetPackageName", yourStandardIcon) != null) {

            //Your own method for set icon   
            setIcon(packIcon.getDrawableIconForPackage("YourTargetPackageName", yourStandardIcon));

            }else{
                //Your own method for set icon   
                setIcon(yourStandardIcon);
            }
        }

【讨论】:

    【解决方案2】:

    这只有在安装了以下任何软件包时才有效,

    1) 安装了吗?

    org.adw.launcher.THEMES
    com.gau.go.launcherex.theme
    

    getAvailableIconPacks 应该返回 HashMap 大小 >0

    2) 下面是返回有效的drawable还是null?

     d = packIcon.getDrawableIconForPackage(packName, iconDrawable);
    

    你的用法是错误的。

    您正在迭代抛出图标提供程序包名称。所以在以下情况下您要求

    d = packIcon.getDrawableIconForPackage(packName, iconDrawable);
    //means 
    //d = packIcon.getDrawableIconForPackage("org.adw.launcher.THEMES",conDrawable)
    

    所以如果没有从 google play 安装上述主题,它只会返回默认的可绘制对象。

    【讨论】:

    • 方法检查 if (!mLoaded) load();在可绘制之前......所以它不起作用
    • 我想在我的自定义启动器上安装图标包(从 google play 下载),没有 ADW 或 GO,它是我的启动器! getDrawableIconForPackage 返回“Pack Icon App”的图标
    • 但是如果没有 org.adw.launcher.THEMES com.gau.go.launcherex.theme,IconPackManager 将无法工作
    • 也许我们不明白......他们需要那些包??如果我从 Google Play 下载一个图标包,我可以通过代码将它安装在 Launcher3(股票启动器)上吗?
    • HashMap 的 packName 变量返回 website.leifs.delta (我已经安装了随机图标包)所以代码可以工作..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 2015-07-11
    • 2013-05-27
    • 1970-01-01
    • 2012-03-16
    • 2018-07-29
    相关资源
    最近更新 更多