Czy istnieje sposób na dodanie odznaki do ikony aplikacji w systemie Android?

Na iPhonie możesz dodać numerowaną plakietkę do ikony aplikacji. Na BlackBerry, udało mi się namalować obraz na ikonę aplikacji, podczas gdy w programie. Chcę to zrobić również dla Androida. Nie chcę korzystać z paska powiadomień, ponieważ nie jest to coś, co musi być natychmiast powiadamiane. Zamiast tego chcę, aby użytkownik mógł zobaczyć, ile nowych wiadomości znajduje się w aplikacji, patrząc na ikonę aplikacji.

Author: blahdiblah, 2010-05-25

4 answers

Niestety, Android nie pozwala na zmianę ikony aplikacji, ponieważ jest ona zapieczętowana w APK po skompilowaniu programu. Nie ma sposobu, aby programowo zmienić go na "drawable".

Możesz osiągnąć swój cel używając widżetu zamiast ikony. Widżety są wysoce konfigurowalne i mogą robić to, co chcesz.

Tutaj jest krótka dyskusja na temat różnicy między powiadomieniem ikon iPhone ' a a używaniem widżetów:

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

Jak zauważysz, nie ma praktycznie żadnej różnicy między używaniem widżetu lub ikony, ponieważ mogą one być tego samego rozmiaru i wyglądać tak samo.

 32
Author: HXCaine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-25 14:34:23

Można to zrobić również w domu Sony Xperia. Pisałem o tym tutaj, ale ważne części są poniżej. Urządzenia Sony używają klasy o nazwie BadgeReciever.

  1. Zadeklaruj pozwolenie com.sonyericsson.home.permission.BROADCAST_BADGE w swoim pliku manifestu:

  2. Nadaj Intent do 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. Załatwione. Po emisji Intent launcher powinien pokazać odznakę na ikonie aplikacji.

  4. Aby ponownie usunąć odznakę, po prostu wyślij nową nadawanie, tym razem z SHOW_MESSAGE ustawionym na false:

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

Wyłączyłem szczegóły dotyczące tego, jak znalazłem to, aby odpowiedź była krótka, ale wszystko jest dostępne na blogu. To może być dla kogoś interesująca lektura.

Zamieściłem również osobne pytanie o to tutaj i dodam tam pełną odpowiedź, gdy tylko będę mógł (potrzebuję 10 reputacji, aby odpowiedzieć na własne pytanie w ciągu 8 godzin).

 16
Author: Marcus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:35

Biblioteka ShortcutBadger umożliwia i współpracuje z LG, Sony, Samsung, HTC i innymi niestandardowymi wyrzutniami.

Ma nawet sposób wyświetlania liczby znaczków na pulpicie czystych urządzeń z Androidem.

Zaktualizowanie liczby znaczków w ikonie aplikacji jest tak proste, jak wywołanie:

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

Zawiera aplikację demonstracyjną, która pozwala przetestować jej zachowanie.

Lub

Możesz również spróbować activity-alias, ale w tym celu musisz utworzyć różne ikony z Znaczki wartości, to będzie działać świetnie w przypadku-trzeba przełączać się między 2 różne ikony aplikacji (trzeba utworzyć inną aktywność-alias do wyświetlania różnych ikon TJ więcej ikon = więcej aktywności-alias).

 9
Author: Gagan Deep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-16 07:40:07

Oto Jak to zrobić:

Myślę, że jest też sposób, aby to zrobić na launcherze LG, ale nie dowiedziałem się jeszcze jak.

 0
Author: grebulon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-28 12:22:54