Fixar widgets do Resumo no app

Com o Android 8.0 (nível 26 da API) e versões mais recentes, você pode permitir que os usuários fixem seus widgets na tela inicial no app. Promover widgets diretamente no app é uma ótima maneira de aumentar o engajamento do usuário, especialmente depois que ele conclui uma tarefa relacionada ou quando acessa repetidamente um recurso no app.

Criar uma solicitação de fixação

Para iniciar a fixação de widgets, use o requestPinGlanceAppWidget método da classe GlanceAppWidgetManager. Para apps executados em versões anteriores do Android, esse método retorna "false". No entanto, se a solicitação for enviada ao sistema, ele retornará "true".

Confira um exemplo de como criar uma solicitação de fixação:

@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)
                )
            }
        }
    ) {}
}

Nesse exemplo, MyWidgetReceiver é a classe que recebe os callbacks do widget, e MyWidget é o widget do Glance que você quer fixar. O successCallback é uma PendingIntent que é acionada quando o widget é fixado.

Processar a resposta da solicitação de fixação

Quando um usuário responde à caixa de diálogo de solicitação de fixação, seu app recebe uma resposta. Se o usuário aceitar a solicitação, o widget será fixado na tela inicial, e a PendingIntent successCallback será acionada. Se o usuário negar a solicitação, nada acontecerá.

É importante observar que o successCallback só será acionado se o widget for adicionado à tela inicial. Ele não será acionado se o usuário negar a solicitação ou se a tela de início não oferecer suporte à fixação.