ユーザーがタップしたときに表示されるデータを変更するウィジェットに取り組んでいます。これは通常は簡単に対処できますが、私のアプリ ウィジェット プロバイダーは、異なるデータ セットを持つ複数のウィジェット インスタンスを処理しています。そうは言っても、ユーザーがウィジェットをタップすると、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 マニフェスト ファイルに設定する必要があるものはありますか、それとも完全に間違っていることがありますか?
これを読んでくれてありがとう、トニー