データウィジェットにデータを送信しようとしています
-
20-09-2019 - |
質問
ユーザーがタップしたときに表示しているデータを変更するウィジェットに取り組んでいます。これは通常簡単に対処できますが、アプリウィジェットプロバイダーは、異なるデータセットを持つ複数のウィジェットインスタンスを処理しています。そうは言っても、ユーザーがウィジェットをタップすると、ChadedAta()メソッドを呼び出す留置指定剤が起動されます。起動されている意図の内部は、ウィジェットIDを保存する場所であるため、使用するデータセットがCanderata()を把握しています。最初はIntentのExtrasにウィジェットIDを保存していましたが、Androidウィジェットがウィジェットの意図エクストラを処理する方法にバグがあることがわかりました。コンテンツのように:WidgetID IEコンテンツ:24など)。
これが、私が保留中のデータを設定する方法です:
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マニフェストファイルにセットアップする必要があるものはありますか、それとも完全に間違っていることはありますか?
これを読んで時間を取ってくれてありがとう、トニー
解決
一致する必要があります
<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からタイプを推測できない)を含む意図的なオブジェクトは、URIがフィルター内のURIと一致し、フィルターが同様にタイプを指定しない場合にのみテストに合格します。これは、mailto:and tel:のようなurisのような場合にのみ当てはまります。