0

我需要创建其他应用程序的主页快捷方式。为此,我需要获取可绘制图标的 ID。

我可以得到实际的drawable,但我不知道如何在不知道drawable 名称的情况下获取它的ID。

有没有办法找到可绘制对象的名称或从可绘制对象获取 ID?

我想我说了太多次drawable。

//get icon drwable
public Drawable getIcon(String pack) {
        final PackageManager pm = context.getPackageManager();
        try {
            return pm.getApplicationIcon(pack);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
            return null;
        }
    }

public void makeShortcut(String pack){
         Intent shortcutIntent;

            shortcutIntent = new Intent();
            shortcutIntent.setComponent(new ComponentName(pack, ".classname"));
            int iconId =geIconId(pack); // a default icon for now TODO


            Log.i("icon id", ""+iconId);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            final Intent putShortCutIntent = new Intent();
            putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
                    shortcutIntent);

            // Sets the custom shortcut's title
            putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,  getAppName(pack));
            putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(
                    context,iconId));
            putShortCutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
            context.sendBroadcast(putShortCutIntent);
    }
4

2 回答 2

1

图标启动器 drawableId 是相同的。我认为,首先获取应用程序图标,然后通过设置组件启动该应用程序。

在此处输入图像描述

您可以使用以下方法获取应用程序的 Drawable 图标:

Drawable icon = getPackageManager().getApplicationIcon("com.example");

然后

意图意图 = new Intent(); intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity")); 开始活动(意图);

于 2012-11-25T13:55:30.373 回答
0

ShortcutIconResource.fromContext(pkgContext, iconId) 成功了! 为第三方应用程序创建快捷方式,这可能吗?

于 2013-07-10T02:56:06.417 回答