🐷

AndroidのウィジェットをあるSDK以上だけ出したい場合

2023/11/05に公開

Android12以上だけでウィジェット機能を出したい

個人的に古いOSのホーム画面を信じてません。以前、ウィジェットの運用で苦労した経験があるので、なるべく最近のSDKだけを対象にしたいです。
そんなときのTipsです。最初から限定したい場合に有用だと思います。

ウィジェットを機能を提供する前に以下のように実装すると簡単に対応できます。enabledをfalseにしておきます

AndroidManifest.xml
・・・
        <receiver android:name=".MyGlanceAppWidgetReceiver"
            android:exported="true"
+           android:enabled="false"
            >

以下のようにSDK12以上で有効化します。

class App :Application() {
    override fun onCreate() {
        super.onCreate()
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
            val pm = applicationContext.packageManager
            val componentName = ComponentName("com.ko2ic.spike.glance", "com.ko2ic.spike.glance.MyGlanceAppWidgetReceiver")
            pm.setComponentEnabledSetting(
                componentName,
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP
            )
        }
    }
}
NewsPicks の Zenn

Discussion