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