2012-03-06 16 views

risposta

7

IntentSender è una specie di un livello di astrazione o di classe di collante che permette di

  1. ricezione trasmissione quando l'utente seleziona l'applicazione in Scelta.

    Esempio quando si utilizza IntentSender:

    Intent intent = new Intent(Intent.ACTION_SEND) 
        .putExtra(Intent.EXTRA_TEXT, "This is my text to send.") 
        .setType("text/plain"); 
    Intent receiver = new Intent(this, BroadcastTest.class) 
        .putExtra("test", "test"); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT); 
    Intent chooser = Intent.createChooser(intent, "test", pendingIntent.getIntentSender()); 
    startActivity(chooser); 
    
  2. Inizia Activity con IntentSender invece di Intent (più in Android docs)

    startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)

    Come startActivity(Intent, Bundle), ma prendendo un IntentSender per iniziare .

+1

Grazie per la risposta. È bello notare che lo sviluppatore può usare '(ComponentName) intent.getExtras(). GetParcelable (EXTRA_CHOSEN_COMPONENT)' nel suo metodo ricevitore 'onReceive()' per ottenere le informazioni sull'applicazione scelta (nome pacchetto, ecc ...). –

2

La documentazione per gli sviluppatori Android ufficiale per IntentSender afferma chiaramente:

istanze di questa classe non possono essere fatte direttamente, ma piuttosto devono essere creati da un PendingIntent esistente con PendingIntent.getIntentSender().

Quindi, si dovrebbe (dovrebbe) non vedere questa classe utilizzata direttamente in un esempio di codice o tutorial.

Per quanto riguarda lo PendingIntent, si tratta fondamentalmente di un token che si fornisce a un'altra applicazione che consente a tale applicazione di utilizzare le autorizzazioni dell'app per eseguire una parte specifica del codice dell'app.

Here's an example di un PendingIntent utilizzato in una classe.