I have a watch face for Wear OS that I built several years ago. Recently, users have been complaining of crashes on the Galaxy Watch 4. I picked one up and found that Complication icons aren't properly loading on it. Calling complicationData.getIcon()
returns an Icon, but calling loadDrawable()
on that produces a null value. There must be a way to get Complication icons still? Plenty of watch faces have them.
Turns out, the issue at hand is Google's restrictions on package visibility in Android 11+. The fix is to declare <queries>
in your manifest based on the ACTION_COMPLICATION_UPDATE_REQUEST
intent filter:
<queries>
<intent>
<action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST" />
</intent>
</queries>