2

これでウィジェットに関連するアプリを実装しています.1つのウィジェットを用意しましたが、それは完全に機能しており、ビューをクリックするとアクティビティが開き、そのウィジェットの設定が準備されます。

しかし、私の要件は、ホーム画面のウィジェットをクリックしたときに、アクティビティを直接開き、次にウィジェットを開きたいということです。

上の図から、カスタムアナログ時計ウィジェットをクリックすると、アプリケーションで最初のアクティビティが開きます。次に、アクティビティからそのウィジェットの設定をセットアップするため、ウィジェットを表示します。最初にアクティビティを開くにはどうすればよいですか?

4

2 に答える 2

6

ウィジェットは、ホーム画面に追加されたときに呼び出される特別なアクティビティを持つことができます。そのアクティビティは、アクティビティの「onCreate」メソッドで受け取ったウィジェット ID を使用して SUCCESS インテントを返すか、ウィジェット自体の作成を防止したい場合は RESULT_CANCELED を返すことができます。

android:configureXML の属性に構成アクティビティ クラスを追加し、AndroidManifest のアクティビティ宣言にappwidget-providerインテント フィルターを追加するだけです。http://developer.android.com/guide/topics/appwidgets/index.html#Configuringandroid.appwidget.action.APPWIDGET_CONFIGUREで詳しく説明されています

受け取ったインテントにはウィジェット ID があります。

public void onCreate(Bundle savedInstanceState) {
    ...
    int widgetID = getIntent().getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    ...
}

次に、アクティビティを終了するか、次の方法setResult(RESULT_CANCELED);でウィジェットの作成を確認できます。

    Intent resultValue = new Intent();
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
    setResult(RESULT_OK, resultValue);

そのアクティビティからすべてのウィジェット設定を行うことができます。

一方、すべてのウィジェット インスタンスに対して 1 回だけ行う必要がある他のセットアップを実行する場合は、http://developer.android.com/guide/ で説明されているように、AppWidgetProvider クラスのメソッドで行うことができますonEnabledtopic/appwidgets/index.html#AppWidgetProvider

于 2013-04-15T07:07:16.203 に答える
1

このチュートリアルをチェックしてください: http://android-er.blogspot.nl/2010/10/simple-home-screen-app-widget-with.htmlそれはあなたが望むことを正確に行います。

于 2013-04-18T11:29:34.867 に答える