0

他のアプリケーションのホーム ショートカットを作成する必要があります。そのためには、アイコン ドローアブルの ID を取得する必要があります。

実際のドローアブルを取得できますが、ドローアブルの名前を知らずに 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");

それで

インテント インテント = 新しいインテント(); Intent.setComponent(new ComponentName("com.example", "com.example.MyExampleActivity")); startActivity(意図);

于 2012-11-25T13:55:30.373 に答える
0

ShortcutIconResource.fromContext(pkgContext, iconId) はトリックを行います! サードパーティ製アプリのショートカットを作成することは可能ですか?

于 2013-07-10T02:56:06.417 に答える