Как Facebook добавляет номера значков на значок приложения в Android?

Я знаю, что здесь есть несколько вопросов, которые спрашивают, можно ли добавить значки в приложение для Android и все они получат ОТВЕТ …

Но почему-то последняя бета-версия Facebook для Android, похоже, делает то, что по крайней мере похоже на значок, даже если это не технически точно.

В этом сообщении один из комментаторов говорит, что это как-то связано с TouchWiz. А также здесь они упоминают об этом как о признаке «S3 TouchWiz Jelly Bean Addon».

Я по-прежнему был бы признателен за информацию о том, как это можно сделать, и если для этого есть какой-то API, который я могу использовать в своем приложении (при работе в соответствующей среде – то есть том же устройстве, где FB демонстрирует это поведение)?

Привет, вы можете использовать эту библиотеку просто.

Поддержка: Sony, Samsung, LG, HTC, Xiaomi, ASUS, ADW, APEX, NOVA, Huawei, ZUK, OPPO

ShortcutBadger

введите описание изображения здесь

Добавить :

int badgeCount = 1; ShortcutBadger.applyCount(context, badgeCount); 

Удалить :

 ShortcutBadger.applyCount(context, 0); 

Я выяснил, как это делается для устройств Sony.

Об этом я писал в блоге. Я также разместил отдельный SO-вопрос об этом здесь .


В устройствах Sony используется class 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); 

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

Существует не стандартный способ достижения этого; Многие производители, такие как Sony или Samsung, внедрили его в собственную настройку Android.

Например, в Samsung, вы должны транслировать намерение с помощью действия BADGE_COUNT_UPDATE, пусть MainActivity будет вашим основным classом активности и будет считаться номером, который вы хотите отображать на своем значке приложения, обратите внимание, что 0 спрячет значок:

 Intent intent = new Intent("android.intent.action.BADGE_COUNT_UPDATE"); intent.putExtra("badge_count", count); intent.putExtra("badge_count_package_name", context.getPackageName()); intent.putExtra("badge_count_class_name", MainActivity.class.getName()); context.sendBroadcast(intent); 

Устройства Sony используют действие "com.sonyericsson.home.action.UPDATE_BADGE" со своими пользовательскими дополнениями, как @Marcus Answered, поэтому вам нужно добавить разрешение "com.sonyericsson.home.permission.BROADCAST_BADGE" в манифест приложения и:

 Intent intent = new Intent("com.sonyericsson.home.action.UPDATE_BADGE"); intent.putExtra("com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME", MainActivity.class.getName()); intent.putExtra("com.sonyericsson.home.intent.extra.badge.SHOW_MESSAGE", true); intent.putExtra("com.sonyericsson.home.intent.extra.badge.MESSAGE", String.valueOf(count)); intent.putExtra("com.sonyericsson.home.intent.extra.badge.PACKAGE_NAME", context.getPackageName()); context.sendBroadcast(intent); 

Примечание. Желательно запрашивать данные вашего приложения ( context.getPackageName() , MainActivity.class.getName() ), а не жестко кодировать его на всякий случай, если вы будете делать рефакторинг в будущем.

Но почему-то последняя бета-версия Facebook для Android делает именно это …

Не соответствует теме форума, содержащей скриншот, с которым вы связались . Цитирование vakama94:

Ну, это на самом деле TouchWiz, а не только приложение. У меня Galaxy S II работает JellyBean 4.1.2, и он делает то же самое, но с некоторыми другими приложениями

Является ли Samsung публичным API, позволяющим приложениям публиковать номера, которые будут использоваться в качестве значков, я не могу сказать. Это может быть что-то, что они делали в частном порядке с несколькими фирмами.

Вы можете предоставить доказательства того, что эти значки видны на домашнем экране Android Android, например, одном из устройств серии Nexus.

  • Пользовательские шрифты и XML-макеты (Android)
  • Где получить строковый литерал «UTF-8» в Java?
  • Есть ли способ получить количество меток чисел, используемых в файле jar
  • Преобразование списка в массив в Java
  • Файл Android FileInputStream для чтения () в String
  • как переопределить кнопку панели действий в андроиде?
  • Переключатель Activity / Fragment Transitions совместим с устройствами до Lollipop?
  • Обнаружить сенсорное нажатие против длинного нажатия против движения?
  • Исходные ресурсы по сравнению с базой данных SQLite
  • Как сгенерировать QR-код для Android-приложения?
  • Как настроить чувствительность микрофона во время записи звука в Android
  • Давайте будем гением компьютера.