/var/log/messages

debugging with sixth sense

Widget の導入可否

何らかの条件で widget の導入可否を制御したい場合、設定 Activity を導入して onCreate で result を設定することで、よしなに取り図らうことができる模様。

自分メモということで以下に控えを。

まず、Widget の定義、ということで以下なエントリを AndroidManifest.xml に追加すると思います。

        <receiver
            android:name=".MyWidgetIntentReceiver"
            android:label="@string/app_name" >

            <intent-filter>
                <action android:name="UPDATE_WIDGET" />
            </intent-filter>

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

上記で指定している widget の設定ファイルである res/xml/appwidget.xml にて

    android:configure="com.example.Config"

みたいな指定をしてあげることで Config というクラスが widget 導入時に起動される事になります。

あ、そういった意味ではこの Activity も AndroidManifest.xml に記述が必要ですね。このケイスだと以下になります。

        <activity android:name=".Config">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
            </intent-filter>
        </activity>

で、あとは導入しても OK であれば

Intent i = getIntent();
setResult(RESULT_OK, i);
finish();

してあげれば良いですし、そうでなければ

setResult(RESULT_CANCELLED);
finish();

で良い模様。

Comments