Создание ярлыка: как я могу работать с рисованным значком? - PullRequest
6 голосов
/ 21 июля 2010

Ниже приведен Мой код для создания ярлыка для выбранного приложения.У меня действительно нет проблем, и приложение работает довольно хорошо.

Проблема в том, что я могу создать ярлык с ресурсом из своего приложения:

    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));

Но я бы очень хотелс нестандартным рисунком.(Drawable myDrawable = .....)

Как я могу это сделать?

   ResolveInfo launchable=adapter.getItem(position);
   final Intent shortcutIntent = new Intent();
    ActivityInfo activity=launchable.activityInfo;
    ComponentName name=new ComponentName(activity.applicationInfo.packageName,activity.name);       
    shortcutIntent.setComponent(name);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    final Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    // Sets the custom shortcut's title
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, launchable.loadLabel(pm));
    // Set the custom shortcut icon
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));

    // add the shortcut
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    sendBroadcast(intent);
    finish();

Большое спасибо за любую подсказку

Ответы [ 2 ]

28 голосов
/ 26 июля 2010

Наконец-то найдено решение; Я был глуп, чтобы использовать Intent.EXTRA_SHORTCUT_ICON_RESOURCE:

Вот правильный код:

Drawable iconDrawable = (....); 
BitmapDrawable bd = (BitmapDrawable) iconDrawable;
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bd.getBitmap());
3 голосов
/ 26 ноября 2014

Я не могу комментировать, поскольку у меня всего 23 репутации, но я использовал ваш код, и он был полезен. Но мое изображение не было правильно масштабировано на ярлыке, поэтому я нашел две интересные темы, которые могут завершить решение:

Чтобы получить правильный размер ярлыка: https://stackoverflow.com/a/19003905/3741926

Чтобы масштабировать ваш чертеж (используя размер, который вы рассчитали с помощью предыдущей функции) https://stackoverflow.com/a/10703256/3741926

При всем, что у меня есть ярлык с правильно масштабированным значком, надеюсь, это поможет

...