在 Android 8.0(API 级别 26)及更高版本中,您可以让用户在应用内将 widget 固定到主屏幕。直接在应用内推广 widget 是提高用户互动度的好方法,尤其是在用户完成相关任务后,或者当用户反复访问应用中的某项功能时。
创建 PIN 码请求
如需发起微件固定,请使用 GlanceAppWidgetManager 类中的 requestPinGlanceAppWidget 方法。对于在较低 Android 版本上运行的应用,此方法会返回 false。不过,如果请求已成功发送到系统,则会返回 true。
以下示例展示了如何创建固定请求:
@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,会在微件成功固定时触发。
处理 PIN 码请求响应
当用户响应固定请求对话框时,您的应用会收到响应。如果用户接受请求,您的 widget 会固定到其主屏幕,并触发 successCallback PendingIntent。如果用户拒绝请求,则不会发生任何操作。
请务必注意,只有在微件成功添加到主屏幕后,系统才会触发 successCallback。如果用户拒绝请求或启动器不支持固定,则不会触发该回调。