Fixar widgets do Resumo no app

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

Criar uma solicitação de PIN

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

Confira um exemplo de como criar uma solicitação de 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)
                )
            }
        }
    ) {}
}

Neste exemplo, MyWidgetReceiver é a classe que recebe os callbacks do widget, e MyWidget é o widget do Glance que você quer fixar. O successCallback é um PendingIntent que é acionado quando o widget é fixado com sucesso.

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

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

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