Question

Travailler avec android j'ai réalisé que les intentions implicites sont bons choix dans la plupart des cas, en raison de leur flexibilité de. Mais ce qui est sur les intentions explicites? Quels sont les avantages de les utiliser? Quels sont les cas communs quand il est une bonne pratique de les utiliser?

Était-ce utile?

La solution

Intentions implicites ne précisent pas directement les composants Android qui devrait être appelé, il précise que l'action à effectuer. A Uri peut être utilisé avec l'intention implicite de préciser le type de données.

par exemple

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

PROVOQUERONT navigateur Web pour ouvrir une page Web. système recherche Android pour tous les composants qui sont enregistrés pour l'action spécifique et les données type.If de nombreux composants se trouvent l'utilisateur peut alors sélectionner le composant à utiliser ..

intentions explicites sont utilisées dans l'application elle-même, dans laquelle une activité peut passer à une autre activité ... Exemple Intent intent = new Intent(this,Target.class); Cela provoque la commutation de l'activité dans le contexte actuel de l'activité cible. Explicit intentions peuvent également être utilisés pour transmettre des données à une autre activité à l'aide de la méthode de putExtra et récupérés par l'activité de la cible par des procédés de getIntent().getExtras().

Espérons que cela aide.

Autres conseils

Vous utilisez généralement des intentions explicites pour les activités à partir de votre propre application. A ce moment-là, vous savez exactement quelle activité vous voulez commencer, donc il n'y a aucune raison de passer par le travail supplémentaire de mettre en place les intentions implicites.

  1. Intentions explicites sont utilisées pour appeler un composant spécifique. Lorsque vous savez quel composant que vous voulez lancer et vous ne voulez pas donner à l'utilisateur un contrôle libre sur lequel le composant à l'exemple use.For, vous avez une application qui dispose de 2 activités. Activité A et B. activité à B de l'activité de l'activité de lancement A. Dans ce cas, vous définissez une intention explicite de ciblage activityB puis l'utiliser pour appeler directement ce.

  2. Intentions implicites sont utilisés lorsque vous avez une idée de ce que vous voulez faire, mais vous ne savez pas ce qui devrait être lancé composant. Ou si vous voulez donner à l'utilisateur la possibilité de choisir entre une liste de composants à utiliser. Si ces Intentions sont envoyées au système Android il recherche tous les composants qui sont enregistrés pour l'action spécifique et le type de données. Si un seul composant est trouvé, Android commence le composant directement. Par exemple, vous avez une application qui utilise l'appareil photo pour prendre des photos. L'une des caractéristiques de votre application est que vous donnez à l'utilisateur la possibilité d'envoyer les photos qu'il a prises. Vous ne savez pas quel type d'application, l'utilisateur a qui peut envoyer des photos et que vous voulez aussi donner à l'utilisateur la possibilité de choisir l'application externe à utiliser s'il a plus d'un. Dans ce cas, vous ne seriez pas utiliser une intention explicite. Au lieu de cela, vous devez utiliser une intention implicite qui a son ensemble d'actions à ACTION_SEND et ses données ensemble supplémentaire à l'URI de la photo.

    Une intention explicite est toujours livré à sa cible, peu importe ce qu'elle contient; le filtre n'est pas consulté. Mais une intention implicite est livré à un composant que si elle peut passer à travers l'un des filtres du composant

1) Explicit intention:. Savoir développeur nom du composant ainsi, nom spécifié dans Intention

2) implicite But:. Pas indiqué un composant intention

KEY: Quand vous savez et quand vous ne savez pas

  

Intention explicite:

Utiliser l'intention explicite quand vous savez exactement ce qui Activity peut traiter votre demande.

Exemple: Vous avez une liste des activités et lorsque vous cliquez sur un élément dans la liste, il ouvre une activité de détail. Dans ce cas, vous KNOW que les détails de l'élément peuvent être affichées ou traitées par DetailActivity.class de votre application. Donc, pour effectuer cette action vous créez une intention en spécifiant explicitement le nom de classe.

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

Implicite intention :

Utiliser l'intention implicite lorsque vous ne savez pas quelle activité dont l'application / s peut traiter votre demande.

Exemple: Vous avez un lien. Lorsque vous cliquez sur le lien, il devrait ouvrir la page Web dans un certain navigateur. Vous NE SAIT PAS exactement quelle activité dans laquelle l'application peut traiter votre demande. Vous avez juste une vague idée que son lien de page Web, il devrait ouvrir une page Web dans un certain navigateur quand quelqu'un ouvre. Dans ce cas, vous spécifiez simplement l'action, puis OS se charge du reste.

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

BONUS:

Comment OS décide?

Il y a un terme pour cela. Il appelle la Résolution intention.
Dans sa résolution intention.

  • OS prend l'action indiquée dans votre intention.

  • va dans le PackageManager et regarde pour tous les inscrits activités avec l'action correspondante toutes les applications installées sur votre appareil.

  • Affiche la liste de toutes les applications correspondantes dans une fenêtre pop-up.

Un moyen plus sûr d'écrire des intentions implicites.

Parfois, il est possible qu'il n'y aura pas d'activité qui correspond à l'action. Dans ce cas, vous obtiendrez un NullPointerException. Donc, d'une manière plus préférée est cette

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

Comment faire votre get d'application dans cette liste contextuelle?

Le mot Let vous avez écrit une application du navigateur. Si vous voulez que vos applications apparaissent dans la liste des pop-up quand quelqu'un ouvre le lien. Ensuite, vous devez vous enregistrer votre activité avec l'action en utilisant le fichier de filtres d'intention. Comme cela.

<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>

Références intention commune ACTIONS et leur liste intention Filtres
En savoir plus sur les filtres et la résolution d'intention intention

De Docs :

Il existe deux types d'intentions:

  • intentions explicite spécifier le composant à commencer par le nom (le nom de classe entièrement qualifié). Vous utiliserez généralement une intention explicite de commencer un composant dans votre propre application, parce que vous connaissez le nom de classe de l'activité ou le service que vous voulez commencer. Par exemple, vous pouvez démarrer une nouvelle activité en réponse à une action de l'utilisateur ou lancer un service pour télécharger un fichier en arrière-plan.
  • intentions implicites ne nommez pas un composant spécifique, mais au lieu de déclarer une action générale à exécuter, qui permet à un composant d'une autre application pour gérer. Par exemple, si vous voulez montrer à l'utilisateur un emplacement sur une carte, vous pouvez utiliser une intention implicite de demander qu'une autre application capable montrer un emplacement spécifié sur une carte.
  1. L'intention implicite - Quand on veut appeler les composants du système grâce à l'intention d'effectuer une tâche particulière et nous ne savons pas vraiment le nom des composants à utiliser, le système Android affichera la liste désirée des applications pour effectuer la tâche.
  2. explicite l'intention -. Lorsque nous voulons appeler l'autre activité avec le nom complet qualifié de l'activité et bien sûr, nous savons que le nom de l'activité

Il suffit que nous pouvons décrire les intentions comme ça ..

Intentions explicite:. Ils sont utilisés pour la communication entre les deux activités dans une seule application

par exemple: Considérons une application qui a une page de connexion composée de deux champs (username de dire et mot de passe) .Si les deux sont vrais, il nous conduira à une page qui affiche le champ Nom d'utilisateur qui nous sommes entrés dans before.In ce cas, nous utilisons intentions explicites parce que nous avons besoin de changer les activités et de transmettre des données d'une activité à l'autre activité (champ nom d'utilisateur) dans la même application.

Intentions: Implicite. Ils sont utilisés pour la communication entre les deux activités de différentes applications

par exemple: envisager une application de nouvelles qui décrit au sujet d'un accident dans lequel la vidéo d'accident est enregistré et transféré dans Facebook. En cliquant sur le lien donné dans l'application de nouvelles, il nous diriger vers Facebook .Dans ce cas, la communication est entre une activité en application de nouvelles et et une activité dans Facebook app.For cette fin, nous utilisons Intentions implicites.

J'espère que vous pouvez comprendre.

Implicite intention

  • Il se retire la nouvelle application sans être spécifiée que l'on à tirer vers le haut.
  • Il spécifie que l'action à effectuer et ne précise pas directement les composants Android.
  • URI peut être utilisé avec implicite intention de spécifier le type de données.

Intention explicite

  • Il va tirer une application spécifique et est fixé lors de l'écriture du code.
  • Il est utilisé dans l'application elle-même, dans laquelle une activité peut passer à une autre activité.
  • Permet de transmettre des données à d'autres activités utilisant la méthode mise supplémentaire et récupéré par l'activité cible getIntent ().
  • Il est toujours livré à cibler filtre même non consulté.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top