在应用内固定 Glance widget

在 Android 8.0(API 级别 26)及更高版本中,您可以让用户在应用内将您的 widget 固定到其主屏幕。直接在应用内推广 widget 是提高用户互动度的绝佳方式,尤其是在用户完成相关任务后或用户反复访问应用中的某项功能时。

创建 PIN 码请求

如需启动 widget 固定,请使用 GlanceAppWidgetManager 类中的 requestPinGlanceAppWidget 方法。对于在较低版本的 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 是接收 widget 回调的类,MyWidget 是要固定的 Glance widget。successCallback 是一个 PendingIntent,当 widget 成功固定时触发。

处理 PIN 码请求响应

当用户响应 PIN 码请求对话框时,您的应用会收到响应。如果用户接受该请求,您的 widget 将固定到其主屏幕,并触发 successCallback PendingIntent。如果用户拒绝该请求,则不会发生任何情况。

请务必注意,只有在成功将 widget 添加到主屏幕时,系统才会触发 successCallback。如果用户拒绝该请求或启动器不支持固定,则不会触发此回调。