Domanda

Lavorare con i Android capito che le intenzioni implicite sono buona scelta nella maggior parte dei casi a causa della loro di flessibilità. Ma quello che sta intenti espliciti? Quali sono i vantaggi del loro utilizzo? Quali sono i casi più comuni quando si tratta di una buona pratica di usarli?

È stato utile?

Soluzione

Intenti impliciti non specificano direttamente i componenti Android che dovrebbe essere chiamato, si specifica solo l'azione da eseguire. A Uri può essere utilizzato con l'intento implicita per specificare il tipo di dati.

per esempio

Intent intent = new Intent(ACTION_VIEW,Uri.parse("http://www.google.com"));

Questo farà sì che il browser web per aprire una pagina web. Ricerche di sistema Android per tutti i componenti che sono registrati per l'azione specifica ei dati type.If molti componenti si trovano quindi l'utente può selezionare il componente da usare ..

intenti espliciti vengono utilizzati nell'applicazione stessa in cui un'attività può passare ad altra attività ... Esempio Intent intent = new Intent(this,Target.class); questo cause di commutazione di attività dal contesto corrente all'attività bersaglio. Intents espliciti possono anche essere usate per trasferire dati ad altra attività utilizzando il metodo putExtra e recuperati per attività bersaglio di metodi getIntent().getExtras().

Spero che questo ha aiutato.

Altri suggerimenti

Si utilizzano in genere intenti espliciti per iniziare le attività all'interno della propria applicazione. A quel punto si sa esattamente quale attività si desidera avviare, quindi non c'è alcun motivo per passare attraverso il lavoro supplementare di creare le intenzioni implicite.

  1. Intenti espliciti vengono utilizzati per chiamare un componente specifico. Quando si sa quale componente si desidera avviare e non si vuole dare il controllo libera dell'utente su quale componente use.For esempio, si dispone di un'applicazione che ha 2 attività. Attività A e B. Attività Volete all'attività lancio B dall'attività A. In questo caso si definisce l'intento esplicito mira activityB e quindi utilizzarlo per chiamare direttamente esso.

  2. Intenti impliciti vengono utilizzati quando si ha un'idea di che cosa si vuole fare, ma non si sa quale componente dovrebbe essere lanciato. Oppure, se si vuole dare all'utente la possibilità di scegliere tra una lista di componenti da utilizzare. Se queste Intenti vengono inviati al sistema Android esegue la ricerca per tutti i componenti che sono registrati per l'azione specifica e il tipo di dati. Se viene trovato un solo componente, Android inizia direttamente il componente. Ad esempio, si dispone di un'applicazione che utilizza la fotocamera per scattare foto. Una delle caratteristiche della vostra applicazione è che si dà all'utente la possibilità di inviare le foto che ha preso. Non so che tipo di applicazione l'utente ha in grado di inviare foto, e anche voi volete dare all'utente la possibilità di scegliere quale applicazione esterno da utilizzare se ha più di uno. In questo caso non sarebbe utilizzare un intento esplicito. Invece si dovrebbe usare un intento implicito che ha la sua serie d'azione per ACTION_SEND ed i suoi dati impostati in più per l'URI della foto.

    Un intento esplicito è sempre consegnato al suo obiettivo, non importa ciò che essa contiene; il filtro non viene consultato. Ma un intento implicita viene consegnato ad un componente solo se può passare attraverso uno dei filtri del componente

1) esplicito intento:. Componente nome dello sviluppatore scoprire facilmente, nome specificato in Intent

2) implicito intento:. Non specificato un componente in Intent

CHIAVE: Quando si sa quando e non si sa

  

esplicito intento:

Usa intento esplicito quando si sa esattamente quali Activity in grado di gestire la vostra richiesta.

Esempio: avete una lista di attività e quando si fa clic su un elemento della lista si apre un'attività dettaglio. In questo caso, è KNOW che i dettagli della voce possono essere visualizzati o gestiti da DetailActivity.class della vostra applicazione. Quindi, per eseguire questa azione si crea un Intent specificando esplicitamente il nome della classe.

Intent showDeatil = new Intent(this,DetaiActivy.class);  
startActivity(showDeatil);
  

implicito intento :

Usa intento implicito quando non si sa che l'attività di cui application / s in grado di gestire la vostra richiesta.

Esempio: avete un link. Quando si fa clic sul collegamento che dovrebbe aprire la pagina web in alcuni browser. È NON SO esattamente quali attività nella quale applicazione in grado di gestire la vostra richiesta. Non vi resta che una vaga idea che il suo un link pagina web in modo si dovrebbe aprire una pagina web in un certo browser quando qualcuno apre. In questo caso, è sufficiente specificare l'azione e poi OS si prende cura di tutto il resto.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

BONUS:

Come OS decide?

C'è un termine per esso. Si chiama Risoluzione Intent.
Nel risoluzione Intent.

  • OS tira fuori l'azione specificata nel vostro intento.

  • va nella PackageManager e guarda in alto per tutta la sede attività con l'azione corrispondente tutte le applicazioni installate nel dispositivo.

  • mostra la lista di tutte le applicazioni corrispondenti in un pop-up.

Un modo più sicuro di scrivere intenti implicite.

A volte è possibile che non ci sarà alcuna attività, che corrisponde con l'azione. In questo caso, si otterrà un NullPointerException. Quindi un modo più preferito è questo

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

Come rendere il vostro get applicazione all'interno di quella lista a comparsa?

esempio di farvi avere scritto alcune applicazioni browser. Se si desidera che le applicazioni di presentarsi nella lista pop-up quando qualcuno apre il collegamento. Poi si deve registrare il proprio attività con l'azione utilizzando il file Filtri Intent AndroidManifest.xml. Ti piace questa.

<application
    .....  >

    ......
    <activity android:name=".YourBrowserActivity">
        <action android:name="android.intent.action.VIEW" />       
        <data android:scheme="http" android:host="www.example.com" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    </activity>
 ..... 


</application>

Riferimenti
comuni e la loro lista di intent-Filtri
Altro su filtri intento e risoluzione Intent

Docs :

Ci sono due tipi di intenti:

  • intenti espliciti specificare il componente per iniziare per nome (il nome completo della classe). Potrai genere si utilizza l'intento esplicito di avviare un componente nella propria app, perché non si sa il nome della classe dell'attività o servizio che si desidera avviare. Ad esempio, è possibile avviare una nuova attività in risposta a un'azione dell'utente o di avviare un servizio per scaricare un file in background.
  • intenti impliciti non nominare un componente specifico, ma invece di dichiarare un'azione generale da eseguire, che permette un componente di un'altra app per gestire la cosa. Per esempio, se si desidera mostrare all'utente una posizione su una mappa, è possibile utilizzare un implicito intento di richiesta di un'altra applicazione in grado mostrano una posizione specifica su una mappa.
  1. implicito intento - Quando vogliamo chiamare i componenti del sistema attraverso l'intenzione di eseguire un compito particolare, e noi non sappiamo veramente il nome dei componenti da utilizzare, il sistema Android mostrerà l'elenco desiderato di applicazioni per eseguire il compito.
  2. esplicito intento -. Quando vogliamo chiamare il un'altra attività con il nome completo qualificato delle attività e, naturalmente, sappiamo che il nome dell'attività

Semplicemente possiamo descrivere sia gli intenti come questo ..

Intenti esplicito:. Vengono utilizzati per la comunicazione tra due attività in una singola applicazione

per esempio: si consideri un programma che ha una pagina di login costituito da due campi (ad esempio nome utente e password) .Se entrambi sono vere ci porterà ad una pagina che visualizza il campo nome utente, che siamo entrati before.In questo caso usiamo intenti espliciti, perché abbiamo bisogno di cambiare le attività e per trasportare i dati da un'attività l'altra attività (campo nome utente) nella stessa applicazione.

Intenti impliciti:. Vengono utilizzati per la comunicazione tra due attività di diverse applicazioni

es: prendere in considerazione un'applicazione notizie che descrive su un incidente in cui è registrato il video di incidenti e caricato a Facebook. Mentre cliccando sul link indicato in app notizia che ci indirizzerà a Facebook .In questo caso la comunicazione è compresa tra un'attività in news app e e un'attività in Facebook app.For questo scopo utilizziamo Intenti impliciti.

Spero che tu possa capire.

implicito intento

  • Si tira sulla nuova applicazione senza essere specificato quale per tirare su.
  • Si specifica solo l'azione da eseguire e non specificare direttamente Componenti Android.
  • URI può essere utilizzato con implicito intento di specificare il tipo di dati.

esplicito intento

  • Sarà tirare su una specifica applicazione ed è impostato durante la scrittura del codice.
  • E 'utilizzato nel ricorso stesso in cui un'attività può passare ad altre attività.
  • Utilizzato per passare i dati a altra attività utilizzando il metodo messo in più e recuperate dalle attività bersaglio getIntent ().
  • E 'sempre consegnato al bersaglio filtro addirittura non viene consultato.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top