アプリ ウィジェットを構成できる。たとえば時計ウィジェットでは 表示するタイムゾーンを設定します。
ユーザーにウィジェットの設定を許可したい場合は、ウィジェットを作成します
設定 Activity
。このアクティビティは、
ウィジェットの作成時にアプリ ウィジェット ホストによって自動的に起動される
またはそれ以降の環境を使用することもできます。使用する構成オプションによっては、
指定します。
構成アクティビティを宣言する
Android マニフェストで構成アクティビティを通常のアクティビティとして宣言する
表示されます。アプリ ウィジェット ホストは、
ACTION_APPWIDGET_CONFIGURE
アクティビティは、このインテントを受け入れる必要があります。例:
<activity android:name=".ExampleAppWidgetConfigurationActivity">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
AppWidgetProviderInfo.xml
ファイルで、
android:configure
属性。詳細情報:
このファイルを宣言します。これが
次のように設定アクティビティを宣言する方法を示します。
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
...
android:configure="com.example.android.ExampleAppWidgetConfigurationActivity"
... >
</appwidget-provider>
アクティビティは完全修飾名前空間を使用して宣言されています。これは、ランチャーに パッケージ スコープの外部から参照します。
これだけで構成アクティビティを開始できます。次に、次の操作をします。 実際のアクティビティを実装します
構成アクティビティを実装する
アクティビティを実装する際は、次の 2 つの重要な点に注意してください。
- アプリ ウィジェットのホストが設定アクティビティを呼び出し、
アクティビティは常に結果を返す必要があります。結果にアプリ ウィジェットが含まれている必要があります
アクティビティを起動したインテントによって渡される ID(インテントに保存される)
特典として
EXTRA_APPWIDGET_ID
。 - システムは
ACTION_APPWIDGET_UPDATE
ブロードキャストされます。つまり、構成アクティビティが ウィジェットの作成時にonUpdate()
メソッドを呼び出します。 更新のリクエストは構成アクティビティの責任 ウィジェットの初回作成時はAppWidgetManager
ただし、 その後の更新ではonUpdate()
が呼び出されます。スキップされるのは、 おすすめします。
レスポンスを返す方法の例については、次のセクションのコード スニペットをご覧ください。 更新し、ウィジェットを更新します。
構成アクティビティからウィジェットを更新する
ウィジェットが構成アクティビティを使用する場合、そのウィジェットは
構成完了後にウィジェットを更新するアクティビティです。そうすれば、
Google Cloud コンソールから
AppWidgetManager
。
以下に、ウィジェットを適切に更新して 設定アクティビティを記録します。
アクティビティを起動したインテントからアプリ ウィジェット ID を取得します。
Kotlin
val appWidgetId = intent?.extras?.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID ) ?: AppWidgetManager.INVALID_APPWIDGET_ID
Java
Intent intent = getIntent(); Bundle extras = intent.getExtras(); int appWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID; if (extras != null) { appWidgetId = extras.getInt( AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); }
アクティビティの結果を
RESULT_CANCELED
に設定します。これにより、ユーザーがアクティビティの最後に到達する前に戻ってきた場合でも、 システムがアプリ ウィジェット ホストに構成がキャンセルされたことを通知し、 ホストはウィジェットを追加しません。
Kotlin
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_CANCELED, resultValue)
Java
int resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(Activity.RESULT_CANCELED, resultValue);
ユーザーの好みに応じてウィジェットを設定します。
設定が完了したら、Cloud Storage バケットの
getInstance(Context)
を呼び出してAppWidgetManager
します。Kotlin
val appWidgetManager = AppWidgetManager.getInstance(context)
Java
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ウィジェットを
RemoteViews
レイアウトを呼び出すには、updateAppWidget(int,RemoteViews)
:Kotlin
val views = RemoteViews(context.packageName, R.layout.example_appwidget) appWidgetManager.updateAppWidget(appWidgetId, views)
Java
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget); appWidgetManager.updateAppWidget(appWidgetId, views);
リターン インテントを作成し、アクティビティの結果で設定する。 アクティビティを終了します。
Kotlin
val resultValue = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) setResult(Activity.RESULT_OK, resultValue) finish()
Java
Intent resultValue = new Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); setResult(RESULT_OK, resultValue); finish();
詳しくは、
ListWidgetConfigureActivity.kt
サンプルクラスをご覧ください。
ウィジェットの設定オプション
デフォルトでは、アプリ ウィジェット ホストは構成アクティビティを 1 回だけ起動します。 ユーザーがウィジェットをホーム画面に追加した直後。ただし、 ユーザーが既存のウィジェットを再構成したり、 デフォルトのウィジェット構成を指定することで、ウィジェットの初期構成をスキップできます。
配置したウィジェットをユーザーが再設定できるようにする
ユーザーが既存のウィジェットを再構成できるようにするには、
reconfigurable
[
widgetFeatures
appwidget-provider
の属性です。詳しくは、
AppWidgetProviderInfo.xml
ファイルをご覧ください。
情報です。例:
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable">
</appwidget-provider>
ウィジェットは [ウィジェットを押したまま [再構成] ボタン。 図 1 の 1。
で確認できます。ウィジェットのデフォルト設定を使用する
ユーザーが
行います。そのためには、
configuration_optional
widgetFeatures
フィールドの reconfigurable
フラグ。これにより、ユーザーがウィジェットを追加した後の設定アクティビティの起動が省略されます前述のとおり
ユーザーは、引き続きウィジェットを再構成できます。
できます。たとえば、時計ウィジェットは初期設定をバイパスして、
デバイスのタイムゾーンをデフォルトで表示します。
次に、構成アクティビティを両方としてマークする方法の例を示します。 再構成可能(オプション):
<appwidget-provider
android:configure="com.myapp.ExampleAppWidgetConfigurationActivity"
android:widgetFeatures="reconfigurable|configuration_optional">
</appwidget-provider>