2

ユーザーがタップしたときに表示されるデータを変更するウィジェットに取り組んでいます。これは通常は簡単に対処できますが、私のアプリ ウィジェット プロバイダーは、異なるデータ セットを持つ複数のウィジェット インスタンスを処理しています。そうは言っても、ユーザーがウィジェットをタップすると、changeData() メソッドを呼び出す PendingIntent が起動されます。起動されたインテント内にウィジェット ID を保存するので、changeData() は使用するデータ セットを認識します。最初はインテントのエクストラにウィジェット ID を保存していましたが、Android ウィジェットがウィジェット インテント エクストラを処理する方法にバグがあることがわかったので、setData() メソッドを使用して URL を渡してウィジェットを保存しようとしています (formatted content:widgetId IE content:24 など)。

これは、PendingIntent のデータを設定する方法です。

Intent changeData = new Intent("com.tonycosentini.mintdroid.CHANGE_DATA");
changeData.setData(Uri.parse("content:" + currentWidgetId));
PendingIntent changeDataPendingIntent = PendingIntent.getBroadcast(this, 0, changeData, 0);

ただし、これをテストしようとすると、ウィジェットがタップされたときに通常呼び出される onRecieve() メソッドが呼び出されなくなりました。この作業を正しく行うために Android マニフェスト ファイルに設定する必要があるものはありますか、それとも完全に間違っていることがありますか?

これを読んでくれてありがとう、トニー

4

1 に答える 1

1

一致する必要があります

<data android:scheme="content" />

また

IntentFilter filter = new IntentFilter("com.tonycosentini.mintdroid.CHANGE_DATA");
filter.addDataScheme("content");

あなたのインテントフィルターで。

フィルターを xml で宣言するか Java で宣言するかによって異なります。

http://developer.android.com/guide/topics/intents/intents-filters.html

URI を含むがデータ型を含まない (および URI から型を推測できない) Intent オブジェクトは、その URI がフィルター内の URI と一致し、フィルターが同様に型を指定しない場合にのみ、テストに合格します。これは、実際のデータを参照しない mailto: や tel: などの URI の場合にのみ当てはまります。

于 2009-12-21T08:54:37.820 に答える