Есть ли способ добавить значок к значку приложения в Android?

На iPhone вы можете добавить пронумерованный значок на значок приложения. На BlackBerry я успешно нарисовал изображение на значке приложения в программе. Я хочу сделать это и для Android. Я не хочу использовать панель уведомлений, так как это не то, о чем нужно немедленно уведомить. Вместо этого я просто хочу, чтобы пользователь мог видеть, сколько новых сообщений находится в приложении, просто просматривая значок приложения.

Solutions Collecting From Web of "Есть ли способ добавить значок к значку приложения в Android?"

К сожалению, Android не позволяет изменять значок приложения, поскольку он запечатан в APK после компиляции программы. Невозможно программно изменить его на «drawable».

Вы можете достичь своей цели, используя виджет вместо значка. Виджеты очень настраиваемые и могут делать то, что вы хотите.

Вкратце обсуждается разница между уведомлением значков iPhone и использованием виджетов здесь:

http://www.cnet.com/8301-19736_1-10278814-251.html

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

Это также можно сделать для Xperia Home от Sony. Здесь я рассказывал об этом в блоге, но важные части ниже. В устройствах Sony используется класс BadgeReciever .

  1. com.sonyericsson.home.permission.BROADCAST_BADGE разрешение com.sonyericsson.home.permission.BROADCAST_BADGE в файле манифеста:

  2. Трансляция Intent в BadgeReceiver :

     Intent intent = new Intent(); intent.setAction("com.sonyericsson.home.action.UPDATE_BADGE"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", "com.yourdomain.yourapp.MainActivity"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", "99"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", "com.yourdomain.yourapp"); sendBroadcast(intent); 
  3. Готово. Когда это Intent транслируется, пусковая установка должна показывать значок на вашем значке приложения.

  4. Чтобы снова удалить значок, просто отправьте новую трансляцию, на этот раз с SHOW_MESSAGE установите значение false:

     intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", false); 

Я исключил детали о том, как я нашел это, чтобы ответить на короткий вопрос, но все это доступно в блоге. Может быть, интересно читать для кого-то.

Я также разместил отдельный вопрос SO об этом здесь и добавлю полный ответ там, как только мне позволено (нужно 10 репутации, чтобы ответить на мой собственный вопрос в течение 8 часов).

Библиотека ShortcutBadger позволяет и работает с LG, Sony, Samsung, HTC и другими обычными пусковыми установками.

У него даже есть способ отображать счетчик значков в настольном ПК на чистых Android-устройствах.

Обновление значка в значке приложения так же просто, как и вызов:

 int badgeCount = 1; ShortcutBadger.setBadge(getApplicationContext(), badgeCount); 

Он включает демонстрационное приложение, которое позволяет вам проверять его поведение.

ИЛИ

Вы также можете попробовать алиас активности, чтобы сделать это, но в этом вам нужно создать разные значки с значками значка, он будет отлично работать в случае, если вам нужно переключиться между двумя различными значками приложения (необходимо создать различные псевдонимы активности для отображения Другой значок, т.е. больше значков = больше псевдонимов активности).

Вот как это сделать:

  • Apex Launcher
  • Nova Launcer

Я думаю, что есть способ сделать это на пусковой установке LG, но пока не понял.