androidandroid-widget

Widget not updating on Android 15


My app widgets stopped updating after updating compileSdk and targetSdkVersion to 35. AppWidgetProvider method onUpdate is not called. I was searching for android 15 changes that could cause this but found none. When I put back targetSdkVersion 34 it updates on phones and emulators with android 14 but not on android 15. With both compileSdk and targetSdkVersion 34 it works fine.

abstract class BaseWidgetProvider : AppWidgetProvider(), KoinComponent {

companion object {
    const val WIDGET_NAME = "widget_name"
}

abstract fun getWidgetInfo(): Bundle

override fun onEnabled(context: Context?) {
    super.onEnabled(context)
    logFirebaseEvent(context!!, WIDGET_ADDED, getWidgetInfo())
}

override fun onDisabled(context: Context?) {
    super.onDisabled(context)
    logFirebaseEvent(context!!, WIDGET_REMOVED, getWidgetInfo())
}

override fun onUpdate(
    context: Context, appWidgetManager: AppWidgetManager,
    appWidgetIds: IntArray
) {
    Log.e("EEE", "onUpdate")
    updateWidgets(context)

}

}

This is my provider

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget_original_layout"
    android:configure="com.packagename.widget.WidgetSettingsActivity"
    android:minHeight="52dp"
    android:minWidth="160dp"
    android:resizeMode="horizontal|vertical"
    android:previewImage="@drawable/original_widget_preview"
    android:updatePeriodMillis="1800000" >

</appwidget-provider>

Of course it is declared in Manifest

<receiver
            android:name=".SunWidgetProvider"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.DATE_CHANGED" />
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/original_widget" />
        </receiver>

Solution

  • <receiver
                android:name=".SunWidgetProvider"
                android:icon="@mipmap/ic_launcher"
                android:label="@string/app_name"
                android:exported="true">-------change here false to true