web-dev-qa-db-fra.com

Filtre et activité du manifeste Android

Quelqu'un pourrait-il expliquer les lignes suivantes dans le manifeste -

    <activity
        Android:name=".AboutUs"
        Android:label="@string/app_name">
        <intent-filter >
            <action Android:name="com.example.app1.ABOUT" />
            <category Android:name="Android.intent.category.DEFAULT"/>
        </intent-filter>

    </activity>    

Quelle est l'importance des champs dans le filtre d'activité et d'intention et quand sont-ils utilisés/référés? Désolé, j'ai essayé de lire la documentation, mais je ne pouvais toujours pas comprendre grand-chose.

Je vous remercie

14
Ankit Rustagi
Android:name=".AboutUs"

Ceci est le nom de votre classe d’activité, le point en tête est la notation abrégée de votre paquet. Donc, cela signifie en fait com.your.package.name.AboutUs qui signifie que votre fichier Java qui représente cette activité s'appelle AboutUs.Java

Android:label="@string/app_name"

label est la chaîne affichée dans le programme de lancement (si l'activité est répertoriée dans le programme de lancement) et en haut de la fenêtre lorsque l'activité est ouverte.

<intent-filter > ... </intent-filter>

le filtre d'intention définit les intentions que votre activité "écoute" pour pouvoir être lancées.

<action Android:name="com.example.app1.ABOUT" />
<category Android:name="Android.intent.category.DEFAULT"/>

Action et catégorie sont les deux champs qui sont définis sur une intention avant qu'elle ne soit "déclenchée" dans le système. Le système recherchera ensuite toutes les activités correspondant à l'action et à la catégorie. S'il en trouve une, il lancera cette activité ou, s'il en trouve plusieurs, il les montre toutes à l'utilisateur et les laisse choisir.

Dans votre cas, l'action que vous écoutez com.example.app1.ABOUT est une action personnalisée propre à votre application et non l'une des actions du système.

Voici donc à quoi pourrait ressembler l’intention qui lancerait cette activité:

Intent i = new Intent();
i.setAction("com.example.app1.ABOUT");
i.addCategory("Android.intent.category.DEFAULT");
startActivity(i);

Notez que, dans la mesure où vous avez créé une action personnalisée, cette intention ne nécessite pas l'accès à votre AboutUs.class; cette intention pourrait donc techniquement être déclenchée depuis n'importe quelle application du périphérique et se lancer dans votre activité.

19
FoamyGuy

Pour la ACTION vous avez cette réponse et pour la catégorie DEFAULT vous avez cette réponse

1
Gabriel Petrovay

Une activité est un composant de l'application qui fournit un écran avec lequel les utilisateurs peuvent interagir afin de faire quelque chose, comme composer un numéro, prendre une photo, envoyer un courrier électronique ou afficher une carte. Pour déclarer votre activité, ouvrez votre fichier manifeste et ajoutez un élément en tant qu'enfant de l'élément, comme dans votre exemple.

  • L'attribut Android: name est le seul attribut requis - il spécifie le nom de classe de l'activité.
  • L'attribut Android: label est une étiquette lisible par l'utilisateur pour l'application dans son ensemble, et une étiquette par défaut pour chacun des composants de l'application.

Un élément peut également spécifier divers filtres d'intention (à l'aide de l'élément) afin de déclarer comment d'autres composants de l'application peuvent l'activer.

  • L'élément spécifie qu'il s'agit du point d'entrée "principal" de l'application.
  • L'élément spécifie que cette activité doit être répertoriée dans le lanceur d'applications du système (pour permettre aux utilisateurs de lancer cette activité).

Veuillez vous référer au http://developer.Android.com/guide/components/activities.html

1
rookiejava