l'intenzione del destinatario della scelta non è PendingIntent
. Ad esempio, nel seguente frammento, sto dichiarando l'intento per ACTION_SEND
, con tipo text/plain
e questo è l'intento del mio obiettivo per lo Intent.createChooser
. Quindi sto creando un altro Intent
, ricevitore e un gestore, il PendingIntet
, che invocherà onReceive
del mio BroadcastTest
dopo aver selezionato qualcosa dal selettore.
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
intent.setType("text/plain");
Intent receiver = new Intent(this, BroadcastTest.class);
receiver.putExtra("test", "test");
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);
Intent chooser = Intent.createChooser(intent, "test", pendingIntent.getIntentSender());
startActivity(chooser);
Edit:
Le informazioni, nel caso del BroadcastReceiver
è incorporato nel l'intento che si ottiene come parametro. Dopo aver selezionato una delle opzioni, recuperare gli extra del pacchetto e usare il tasto android.intent.extra.CHOSEN_COMPONENT
, dovresti riuscire a trovare ciò che l'utente ha scelto.
Prova ad aggiungere più semplice Log.d al onReceive
for (String key : intent.getExtras().keySet()) {
Log.d(getClass().getSimpleName(), " " + intent.getExtras().get(key));
}
Nel mio esempio ho avuto
ComponentInfo{org.telegram.messenger/org.telegram.ui.LaunchActivity}
per Telegram
e
ComponentInfo{com.google.android.apps.inbox/com.google.android.apps.bigtop.activities.ComposeMessageActivity}
per InBox
è necessario crearlo tramite 'PendingIntent'. I costruttori sono pubblici ma annotano con '@ hide' – Blackbelt
@Blackbelt ma dovrei passare' PendingIntent' come obiettivo 'Intento'? – pixel