背景
AndroidのWidget開発をしている時に長押しして表示する項目を再設定を行おうとした。しかし、できない端末がありました。調査すると下記のようなことがあるみたいです。
Androidのバージョンによって再設定できないものがある
公式によると下記のように述べています。
**デフォルトでは、アプリ ウィジェット ホストは、ユーザーがウィジェットをホーム画面に追加した直後に、設定アクティビティを 1 回だけ起動します。ただし、デフォルトのウィジェット構成を指定して、ユーザーが既存のウィジェットを再構成できるようにしたり、ウィジェットの初期構成をスキップできるようにしたりするオプションを指定できます。
注:** これらのオプションは、Android 12(API レベル 31)以降でのみ使用できます。以前のバージョンの Android では指定できますが、システムは指定を無視してデフォルトの動作を行います。
ユーザーが既存のウィジェットを再構成できるようにするには、appwidget-provider
の widgetFeatures
属性に reconfigurable
フラグを指定します。詳しくは、AppWidgetProviderInfo.xml
ファイルを宣言するガイドをご覧ください。例:
要するにAndroid12以降ではこのWidgetの再設定を行えますが、これ以前はできないみたいです。
Android12以前ものはどのようにすればいいのか
何かボタンのようなものを配置して、設定画面を開くようにするなどしてカスタムするのが適当なのでしょうか。
実装
Android12のものを想定しています。また、公式から説明やコードを拝借しています。
ユーザーが既存のウィジェットを再構成できるようにするには、appwidget-provider
の widgetFeatures
属性に reconfigurable
フラグを指定します。詳しくは、AppWidgetProviderInfo.xml
ファイルを宣言するガイドをご覧ください。
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
参考記事