如何获取其他应用程序图标的ID?

时间:2012-11-25 13:47:12

标签: android

我需要创建其他应用程序的主页快捷方式。为了做到这一点,我需要获得可绘制图标的ID。

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

有没有办法找到drawable的名称或从drawable对象中获取ID?

我想我说了太多次了。

//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);
    }

2 个答案:

答案 0 :(得分:1)

图标启动器drawableId是相同的。我想,首先获取应用程序图标,然后通过setcomponent启动该应用程序。

enter image description here

您可以使用以下方式获取应用的Drawable图标:

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

然后

Intent intent = new Intent(); intent.setComponent(new ComponentName(“com.example”,“com.example.MyExampleActivity”)); startActivity(意向);

答案 1 :(得分:0)

ShortcutIconResource.fromContext(pkgContext,iconId)诀窍! create shortcut for thrid-party app, is that possible?