何らかの条件で 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();
で良い模様。