Fix adding widgets

This commit is contained in:
MM20 2024-02-19 22:54:02 +01:00
parent 1c54166b58
commit 3f7209035e
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -78,6 +78,8 @@ class BindAndConfigureAppWidgetActivity : Activity() {
private lateinit var appWidgetHost: AppWidgetHost private lateinit var appWidgetHost: AppWidgetHost
private lateinit var appWidgetManager: AppWidgetManager private lateinit var appWidgetManager: AppWidgetManager
private var appWidgetId: Int? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
appWidgetHost = AppWidgetHost(this, 44203) appWidgetHost = AppWidgetHost(this, 44203)
@ -92,7 +94,9 @@ class BindAndConfigureAppWidgetActivity : Activity() {
return return
} }
val widgetId = appWidgetHost.allocateAppWidgetId() val widgetId = appWidgetHost.allocateAppWidgetId().also {
appWidgetId = it
}
val canBind = val canBind =
appWidgetManager.bindAppWidgetIdIfAllowed( appWidgetManager.bindAppWidgetIdIfAllowed(
@ -153,8 +157,12 @@ class BindAndConfigureAppWidgetActivity : Activity() {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
when (requestCode) { when (requestCode) {
RequestCodeBind -> { RequestCodeBind -> {
val appWidgetId = val appWidgetId = appWidgetId
data?.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) ?: return cancel() if (appWidgetId == null) {
Log.e("MM20", "No app widget id provided, canceling")
cancel()
return
}
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
val widget = appWidgetManager.getAppWidgetInfo(appWidgetId) val widget = appWidgetManager.getAppWidgetInfo(appWidgetId)
configureAppWidget(widget, appWidgetId) configureAppWidget(widget, appWidgetId)
@ -166,8 +174,12 @@ class BindAndConfigureAppWidgetActivity : Activity() {
} }
RequestCodeConfigure -> { RequestCodeConfigure -> {
val appWidgetId = val appWidgetId = appWidgetId
data?.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) ?: return cancel() if (appWidgetId == null) {
Log.e("MM20", "No app widget id provided, canceling")
cancel()
return
}
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
finishWithResult(appWidgetId) finishWithResult(appWidgetId)
} else { } else {
@ -187,6 +199,7 @@ class BindAndConfigureAppWidgetActivity : Activity() {
val data = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId) val data = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId)
data.putExtra(ExtraAppWidgetProviderInfo, intent.getParcelableExtra<AppWidgetProviderInfo>(ExtraAppWidgetProviderInfo)) data.putExtra(ExtraAppWidgetProviderInfo, intent.getParcelableExtra<AppWidgetProviderInfo>(ExtraAppWidgetProviderInfo))
setResult(RESULT_OK, data) setResult(RESULT_OK, data)
appWidgetId = null
finish() finish()
} }
@ -225,7 +238,11 @@ private class BindAndConfigureAppWidgetContract(
widgetId = widgetId, widgetId = widgetId,
), ),
) )
} else {
Log.e("MM20", "Could not parse widget result: widgetId=$widgetId, widgetProviderInfo=$widgetProviderInfo")
} }
} else {
Log.e("MM20", "Widget result was not OK")
} }
return null return null
} }