На устройствах под управлением Android 8.0 (уровень API 26) и выше лаунчеры, позволяющие пользователям создавать закрепленные ярлыки, также позволяют закреплять виджеты на главном экране. Подобно закрепленным ярлыкам, эти закрепленные виджеты предоставляют пользователям доступ к определенным задачам в вашем приложении и могут быть добавлены на главный экран непосредственно из приложения, как показано в следующем видео.

Разрешите пользователям закреплять виджет.
В вашем приложении вы можете отправить запрос системе на закрепление виджета на поддерживаемой панели запуска, выполнив следующие шаги:
Убедитесь, что вы указали виджет в файле манифеста вашего приложения .
Вызовите метод
requestPinAppWidget(), как показано в следующем фрагменте кода:
Котлин
val appWidgetManager = AppWidgetManager.getInstance(context) val myProvider = ComponentName(context, ExampleAppWidgetProvider::class.java) if (appWidgetManager.isRequestPinAppWidgetSupported()) { // Create the PendingIntent object only if your app needs to be notified // when the user chooses to pin the widget. Note that if the pinning // operation fails, your app isn't notified. This callback receives the ID // of the newly pinned widget (EXTRA_APPWIDGET_ID). val successCallback = PendingIntent.getBroadcast( /* context = */ context, /* requestCode = */ 0, /* intent = */ Intent(...), /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT) appWidgetManager.requestPinAppWidget(myProvider, null, successCallback) }
Java
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); ComponentName myProvider = new ComponentName(context, ExampleAppWidgetProvider.class); if (appWidgetManager.isRequestPinAppWidgetSupported()) { // Create the PendingIntent object only if your app needs to be notified // when the user chooses to pin the widget. Note that if the pinning // operation fails, your app isn't notified. This callback receives the ID // of the newly pinned widget (EXTRA_APPWIDGET_ID). PendingIntent successCallback = PendingIntent.getBroadcast( /* context = */ context, /* requestCode = */ 0, /* intent = */ new Intent(...), /* flags = */ PendingIntent.FLAG_UPDATE_CURRENT); appWidgetManager.requestPinAppWidget(myProvider, null, successCallback); }
Соответствующие рекомендации по проектированию
Пользователи находят и добавляют ваш виджет через средство выбора виджетов или непосредственно в приложении, когда функциональность виджета наиболее актуальна. Для получения дополнительной информации см. раздел «Поиск и продвижение» .