Начиная с Android 8.0 (уровень API 26) и выше вы можете разрешить пользователям закреплять ваши виджеты на главном экране вашего приложения. Размещение виджетов непосредственно в приложении — отличный способ повысить вовлечённость пользователей, особенно после того, как пользователь выполняет связанную задачу или многократно использует какую-либо функцию в вашем приложении.
Создать запрос на пин-код
Для закрепления виджета используйте метод requestPinGlanceAppWidget
из класса GlanceAppWidgetManager
. Для приложений, работающих на более ранних версиях Android, этот метод возвращает false. Однако, если запрос успешно отправлен системе, этот метод возвращает true.
Вот пример того, как можно создать запрос на PIN-код:
@Composable fun AnInAppComposable() { val context = LocalContext.current val coroutineScope = rememberCoroutineScope() Button( onClick = { coroutineScope.launch { GlanceAppWidgetManager(context).requestPinGlanceAppWidget( receiver = MyWidgetReceiver::class.java, preview = MyWidget(), previewState = DpSize(245.dp, 115.dp) ) } } ) {} }
В этом примере MyWidgetReceiver
— это класс, принимающий обратные вызовы виджета, а MyWidget
— виджет Glance, который вы хотите закрепить. successCallback
— это PendingIntent
, который срабатывает при успешном закреплении виджета.
Обработка ответа на запрос PIN-кода
Когда пользователь отвечает на запрос на закрепление, ваше приложение получает ответ. Если пользователь принимает запрос, ваш виджет закрепляется на его главном экране и срабатывает намерение successCallback
PendingIntent
. Если пользователь отклоняет запрос, ничего не происходит.
Важно отметить, что метод successCallback
срабатывает только в случае успешного добавления виджета на главный экран. Он не срабатывает, если пользователь отклоняет запрос или если лаунчер не поддерживает закрепление.