Как убрать значок в ярлыке приложения?

Как убрать значок в ярлыке приложения в Android? Когда я создаю приложение, прикрепленное ярлык программно, вместе со значком, указанным для ярлыка, значок приложения появляется в правом нижнем углу значка. Я не хочу этот значок.

7 ответов

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

Добавление ярлыка (НЕ виджета приложения) через экран виджетов (что-то вроде этого видео ) может быть обходным путем. Создайте действие, которое фильтрует <action android:name="android.intent.action.CREATE_SHORTCUT" />и создайте ярлык в этом действии, вручную создав Intent.EXTRA_SHORTCUT_INTENTнамерение (вместо через shortcutManager.createShortcutResultIntent()) и возвращая его с помощью setResult().

Смотрите этот ответ для деталей. Обратите внимание, что фактическое поведение может отличаться при использовании другого лаунчера (он может не работать под некоторыми лаунчерами). Я тестировал только Pixel Launcher и Microsoft Launcher под Android 11 и Android 12.

Нет такой опции ни для ShortcutInfo, ни для ShortcutManager. это зависит от программы запуска и должно показывать этот значок, чтобы пользователь знал, в каком приложении он будет открыт. без этого значка невозможно определить, какое приложение добавило его (кроме открытия), это не так удобно для пользователя... например, вы можете выдать себя за другое приложение, добавив, например, значок FB и имя ярлыка "Facebook", и Activity При открытии этого ярлыка может появиться поддельный экран входа. короче говоря: этот значок есть / должен быть там по соображениям безопасности

в моем лаунчере долгое нажатие сразу начинает перемещать ярлык (без выпадающего меню, как для иконки лаунчера), и у меня нет опции "Информация о приложении" в верхней части экрана (в "режиме перемещения"), только "Удалить"

Может быть, стоит добавить AppWidget, стилизованный под значок запуска с названием приложения? ярлыки доступны начиная с API25, виджеты доступны с самого начала, а начиная с API26 вы можете запросить PinAppWidget (стиль диалога, аналогичный добавлению ярлыка)

Попробуйте это может быть работа для вас. mChannel.setShowBadge(false);

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);

Сначала загрузите пакет значков из PlayStore (загружается на выбор). Вернитесь на экран с оскорбительным значком. Нажмите и удерживайте значок, который вы хотите изменить (например, с дополнительным логотипом Chrome), и нажмите "Изменить". Нажмите значок изменения. Это даст вам возможность выбрать из пакета значков, так что нажмите. После этого у вас будет большой выбор значков, поэтому выберите тот, который лучше всего соответствует текущему значку, или выберите что-то совершенно другое. Затем нажмите ОК. Это изменит иконку и не будет лишнего значка.

Добавьте строку ниже в вашем Manifest.xml

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

Код для создания ярлыка на рабочем столе,

 private void addShortcut() {
        //Adding shortcut for MainActivity
        //on Home screen
        Intent shortcutIntent = new Intent(getApplicationContext(), BottomNavigationActivity.class);
        shortcutIntent.setAction(Intent.ACTION_MAIN);

        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "My Shortcut");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
                Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                        R.drawable.alert_clock));
        addIntent.putExtra("duplicate", false);
        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        getApplicationContext().sendBroadcast(addIntent);


    }
private void createNotificationChannel() {
    // Create the NotificationChannel, but only on API 26+ because
    // the NotificationChannel class is new and not in the support library
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        CharSequence name = getString(R.string.channel_name);
        String description = getString(R.string.channel_description);
        int importance = NotificationManager.IMPORTANCE_DEFAULT;
        NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
        channel.setDescription(description);
         channel.setShowBadge(false)

        NotificationManager notificationManager = getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);
    }
}
Другие вопросы по тегам