Как Facebook добавляет номера значков на значок приложения в Android?
Я знаю, что здесь есть несколько вопросов, которые спрашивают, можно ли добавить значки в приложение для Android и все они получат ОТВЕТ …
Но почему-то последняя бета-версия Facebook для Android, похоже, делает то, что по крайней мере похоже на значок, даже если это не технически точно.
В этом сообщении один из комментаторов говорит, что это как-то связано с TouchWiz. А также здесь они упоминают об этом как о признаке «S3 TouchWiz Jelly Bean Addon».
- Как основной stream, созданный Java
- Значение оператора import в файле Java
- Как сделать мою прикладную систему
- Почему main () в java void?
- Как работает импорт Java?
Я по-прежнему был бы признателен за информацию о том, как это можно сделать, и если для этого есть какой-то API, который я могу использовать в своем приложении (при работе в соответствующей среде – то есть том же устройстве, где FB демонстрирует это поведение)?
- NetworkSecurityConfig: нет настроек сетевой безопасности - ошибка Android 7.0?
- Преобразование из одной базы в другую в Java
- Android: переключение камеры при нажатии кнопки
- добавление ресурсов в intellij для проекта java
- Изменение цвета фона отдельных элементов меню навигации
- Использование неинициализированного конечного поля - с / без "этого". спецификатор
- Android: укажите два разных изображения для переключателя с использованием XML
- Android SQLite и огромные наборы данных
Привет, вы можете использовать эту библиотеку просто.
Поддержка: 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
.
-
com.sonyericsson.home.permission.BROADCAST_BADGE
разрешениеcom.sonyericsson.home.permission.BROADCAST_BADGE
в файле манифеста: -
Трансляция
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);
-
Готово. Когда это
Intent
транслируется, пусковая установка должна показывать значок на вашем значке приложения. -
Чтобы снова удалить значок, просто отправьте новую трансляцию, на этот раз с
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.