Ho un widget che dovrebbe chiamare un'attività dell'App principale quando l'utente fa clic sul corpo del widget. Il mio setup funziona per una singola istanza di widget ma per una seconda istanza dello stesso widget il PendingIntent viene riutilizzato e come risultato le informazioni vitali che sto inviando come extra vengono sovrascritte per la prima istanza. Quindi ho pensato che dovevo passare l'ID del widget come dati Intent
tuttavia non appena aggiungo Intent#setData
vedrei nel log che 2 Intenti separati sono appropriatamente licenziati ma l'attività non riesce a raccoglierlo così fondamentalmente l'attività non verrà fuori e non succede nulla (nessun errore o avviso etere) Ecco come l'attività è messa a punto nel manifesto:Android: l'aggiunta di dati a Intent non riesce a caricare Attività
<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>
ed ecco il codice che è messa a punto per la gestione del click
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));
l'applicazione principale e il widget sono confezionati come 2 APK separati ciascuno nel proprio pacchetto e Manifest
Oh! Ma certo - stupido me! Grazie a @mbaird: funziona perfettamente ora – Bostone