← Назад к вопросам

Как появляется иконка приложения на рабочем столе

1.0 Junior🔥 101 комментариев
#Android компоненты

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Механизм появления иконки приложения на рабочем столе в Android

Появление иконки приложения на рабочем столе Android — это результат взаимодействия между системой Android, лаунчером (Launcher) и манифестом приложения (AndroidManifest.xml). Процесс можно разделить на несколько ключевых этапов.

1. Объявление активности в манифесте

Иконка на рабочем столе по сути является ярлыком для запуска конкретной Activity. Чтобы система и лаунчер "увидели" приложение, в манифесте должна быть объявлена активность с intent-фильтром, содержащим действия ACTION_MAIN и CATEGORY_LAUNCHER. Это главная точка входа в приложение.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <!-- Определяет точку входа -->
                <action android:name="android.intent.action.MAIN" />
                <!-- Категория для отображения в лаунчере -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
    </application>
</manifest>

Ключевые атрибуты:

  • android:icon и android:roundIcon — определяют иконку приложения (используется значок из mipmap ресурсов).
  • android:label — текст, отображаемый под иконкой.
  • android:exported="true" — обязательно для активности, которая должна быть доступна извне (включая лаунчер).

2. Роль лаунчера (Launcher)

Лаунчер — это системное приложение, управляющее рабочим столом. При установке или обновлении приложения происходит следующее:

  • Package Manager уведомляет лаунчер о новых/изменённых пакетах через broadcast ACTION_PACKAGE_ADDED или ACTION_PACKAGE_CHANGED.
  • Лаунчер запрашивает у Package Manager список всех активностей с категорией CATEGORY_LAUNCHER.
  • Для каждой найденной активности лаунчер создаёт ярлык (shortcut), используя метаданные из манифеста: иконку, название и Intent для запуска.

3. Система управления иконками

Начиная с Android 8.0 (Oreo), появились адаптивные иконки (Adaptive Icons). Они состоят из двух слоёв: переднего (foreground) и заднего (background). Система или лаунчер могут менять форму иконки (круг, квадрат, скруглённый квадрат) без участия разработчика.

Ресурсы для адаптивной иконкиres/mipmap-anydpi/):

<!-- ic_launcher.xml -->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
    <background android:drawable="@color/ic_background"/>
    <foreground android:drawable="@drawable/ic_foreground"/>
</adaptive-icon>

4. Динамическое управление иконками

В некоторых случаях иконку можно скрыть или изменить программно:

  • Скрытие иконки — удаление категории CATEGORY_LAUNCHER для активности (требует изменения манифеста и переустановки). Некоторые лаунчеры позволяют скрывать иконки через настройки.
  • Создание ярлыков — добавление иконок для быстрого доступа к определённому контенту через ShortcutManager (Android 7.1+).
// Пример создания динамического ярлыка (Android 7.1+)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
    val shortcutManager = getSystemService(ShortcutManager::class.java)
    val shortcut = ShortcutInfo.Builder(this, "id")
        .setShortLabel("Быстрый запуск")
        .setIcon(Icon.createWithResource(this, R.drawable.icon))
        .setIntent(Intent(this, MainActivity::class.java).apply {
            action = Intent.ACTION_VIEW
        })
        .build()
    shortcutManager.dynamicShortcuts = listOf(shortcut)
}

5. Особенности для разных версий Android

  • До Android 3.0 — иконка всегда появлялась после установки.
  • Современные версии — пользователь может удалить иконку с рабочего стола, но приложение остаётся в списке всех приложений. Лаунчеры предоставляют опцию для повторного добавления.
  • Multiple APKs / App Bundles — иконки могут различаться для разных плотностей экрана (mdpi, hdpi, xhdpi и т.д.), система выбирает подходящий ресурс автоматически.

Заключение

Иконка на рабочем столе — это визуальное представление главной Activity приложения, определяемое intent-фильтром в манифесте. Процесс её появления автоматизирован: система устанавливает APK, Package Manager индексирует компоненты, а лаунчер создаёт ярлык. Разработчик должен корректно объявить активность с категорией LAUNCHER, предоставить ресурсы иконок и учитывать особенности платформы, такие как адаптивные иконки и API ярлыков.

Как появляется иконка приложения на рабочем столе | PrepBro