Fix adding widgets on Android 14

Fix #558
This commit is contained in:
MM20 2023-10-06 19:51:13 +02:00
parent 12f88dcb36
commit 59d78f07c5
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -1,11 +1,13 @@
package de.mm20.launcher2.ui.launcher.sheets
import android.app.Activity
import android.app.ActivityOptions
import android.appwidget.AppWidgetHost
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProviderInfo
import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.Process
import android.util.Log
@ -126,19 +128,33 @@ class BindAndConfigureAppWidgetActivity : Activity() {
appWidgetId,
0,
RequestCodeConfigure,
null
getConfigurationOptions(),
)
} else {
finishWithResult(appWidgetId)
}
}
private fun getConfigurationOptions(): Bundle? {
if (Build.VERSION.SDK_INT < 34) {
return null
}
return ActivityOptions.makeBasic()
.setPendingIntentBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
)
.setPendingIntentCreatorBackgroundActivityStartMode(
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED
)
.toBundle()
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (requestCode) {
RequestCodeBind -> {
val appWidgetId =
data?.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) ?: return
data?.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) ?: return cancel()
if (resultCode == RESULT_OK) {
val widget = appWidgetManager.getAppWidgetInfo(appWidgetId)
configureAppWidget(widget, appWidgetId)
@ -160,6 +176,10 @@ class BindAndConfigureAppWidgetActivity : Activity() {
cancel()
}
}
else -> {
Log.w("MM20", "Unknown request code $requestCode")
cancel()
}
}
}