Доступность виджета

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

Пример адаптивного макета
Рисунок 2. Пример закрепления виджета.

Разрешить пользователям закреплять виджет

В своем приложении вы можете создать запрос системе на закрепление виджета на поддерживаемом средстве запуска, выполнив следующие шаги:

  1. Обязательно объявите виджет в файле манифеста вашего приложения .

  2. Вызовите метод 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)
}
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);
}

Пользователи находят и добавляют ваш виджет через средство выбора виджетов или из вашего приложения, когда функциональность виджета наиболее актуальна. Дополнительные сведения см. в разделе Обнаружение и продвижение .

,

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

Пример адаптивного макета
Рисунок 2. Пример закрепления виджета.

Разрешить пользователям закреплять виджет

В своем приложении вы можете создать запрос системе на закрепление виджета на поддерживаемом средстве запуска, выполнив следующие шаги:

  1. Обязательно объявите виджет в файле манифеста вашего приложения .

  2. Вызовите метод 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)
}
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);
}

Пользователи находят и добавляют ваш виджет через средство выбора виджетов или из вашего приложения, когда функциональность виджета наиболее актуальна. Дополнительные сведения см. в разделе Обнаружение и продвижение .