ユーザーがウィジェット本体をクリックすると、メインアプリのアクティビティを呼び出すウィジェットがあります。私のセットアップは単一のウィジェット インスタンスに対して機能しますが、同じウィジェットの 2 番目のインスタンスに対して PendingIntent が再利用され、その結果、追加として送信している重要な情報が最初のインスタンスに対して上書きされます。したがって、ウィジェット ID をIntent
データとして渡す必要があると考えましたが、追加するとすぐにIntent#setData
ログに 2 つの個別のインテントが適切に起動されていることがわかりますが、アクティビティはそれを取得できないため、基本的にアクティビティは起動せず、何も起こりません (いいえerror または warning ether) マニフェストでアクティビティを設定する方法は次のとおりです。
<activity android:name=".SearchResultsView"
android:label="@string/search_results"
<intent-filter>
<action android:name="bostone.android.search.RESULTS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
そして、これがクリックを処理するために設定されたコードです
Intent di = new Intent("bostone.android.search.RESULTS");
di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// if line below is commented out - the Activity will start
di.setData(ContentUris.withAppendedId(Uri.EMPTY, widgetId));
di.putExtra("URL", url);
views.setOnClickPendingIntent(R.id.widgetContent,
PendingIntent.getActivity(this, 0, di, 0));
メインアプリとウィジェットは、それぞれ独自のパッケージとマニフェストに 2 つの個別の APK としてパッケージ化されています