我正在使用 Kotlin 1.9.10 和 Glance 1.0.0 开发一个 Android 小部件应用,希望能够在程序中将小部件固定到主屏幕,并传递更多自定义值。目前,我已经在 onReceive 函数中获取到了刚固定到主屏幕的小部件 ID。
以下是用于将小部件固定到主屏幕的代码:
val appWidgetManager = AppWidgetManager.getInstance(context)
val myProvider = ComponentName(context, MyWidgetReceiver::class.java)
val pinnedWidgetCallbackIntent = Intent(Intent.ACTION_MAIN)
pinnedWidgetCallbackIntent.addCategory(Intent.CATEGORY_HOME)
pinnedWidgetCallbackIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
val successCallback = PendingIntent.getActivity(
context, 0,
pinnedWidgetCallbackIntent, PendingIntent.FLAG_IMMUTABLE
)
appWidgetManager.requestPinAppWidget(myProvider, null, successCallback)
然后在我的接收器(Receiver)中,重写 onReceive 方法来获取刚刚被固定到主屏幕的小部件 ID:
override fun onReceive(context: Context, intent: Intent) {
super.onReceive(context, intent)
if (intent.action == AppWidgetManager.ACTION_APPWIDGET_UPDATE) {
val extras = intent.extras
val widgetId = extras?.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS)?.firstOrNull() ?: -1
}
}
现在的问题是,我希望传递一个额外的值,以便使用小部件 ID 作为键将其保存到本地存储中。请问如何实现这一目标,请帮帮我。