18
2010
[Tutoriel android] Partie 3 – Une petite intention ?
Plus d’informations sur les intent
Dans le tutoriel précédent, nous avions vu l’utilisation des intent pour passer d’une activité à l’autre ; aujourd’hui nous allons faire un pas de plus vers l’utilisation de cette mécanique.
Nous allons, tout d’abord, reprendre l’exemple final du tutoriel précédent et le modifier au fur et à mesure pour appréhender ces nouvelles facettes.
Nous étions restés sur le code de notre bouton comme cela :
@Override
public void onClick(View v) {
if(v == monBouton) {
Intent monIntent = new Intent(this,MonAutreActivite.class);
startActivity(monIntent);
}
}
L’intent était chargé d’appeler l’activité secondaire et par le biais de la méthode startActivity de l’afficher.
Imaginons que notre activité secondaire est un résultat à retourner à notre activité principale.
Nous allons rajouter un type de code de retour à notre activité à vérifier pour le retour d’une action fournissant un résultat.
public static final int CODE_RETOUR = 0;
On nommera ce type CODE_RETOUR avec une valeur de 0 pour l’identifier, ensuite nous allons utiliser la méthode startActivityForResult() pour lancer une autre activité et attendre un retour de celle-ci.
@Override
public void onClick(View v) {
if(v == monBouton) {
Intent intent = new Intent(this,MonAutreActivite.class);
startActivityForResult(intent, CODE_RETOUR);
}
}
Cette méthode prend en paramètres l’intent, ainsi que le code de retour attendu.
La classe Activity contient une méthode nommée onActivityResult, déclenchée à chaque retour d’un résultat d’une activité tierce demandée. Cette méthode contient 3 paramètres : le premier spécifie le numéro de code retourné (dans notre exemple CODE_RETOUR), le second paramètre est le résultat retourné (3 valeurs possible RESULT_CANCELED,RESULT_OK,RESULT_FIRST_USER) et pour finir l’intent de retour.
Nous allons utiliser une autre mécanique de l’intent que l’on appelle les Extras. C’est une manière de passer des informations d’une activité à l’autre, les méthodes putExtra de l’objet intent est la source de ce mécanisme. Je vous renvoie à la documentation d’android pour plus d’informations sur le type de données à passer en paramètres.
http://developer.android.com/reference/android/content/Intent.html
Nous allons coder la partie qui va effectuer la vérification des données lorsqu’un retour est demandé.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Vérification du code de retour
if(requestCode == CODE_RETOUR) {
// Vérifie que le résultat est OK
if(resultCode == RESULT_OK) {
// On récupére le paramètre "Nom" de l'intent
String nom = data.getStringExtra("Nom");
// On affiche le résultat
Toast.makeText(this, "Votre nom est : " + nom, Toast.LENGTH_SHORT).show();
// Si l'activité est annulé
} else if (resultCode == RESULT_CANCELED) {
// On affiche que l'opération est annulée
Toast.makeText(this, "Opération annulé", Toast.LENGTH_SHORT).show();
}
}
}
Jusque-là rien de difficile à comprendre j’espère ? Nous allons alors passer à la deuxième activité et la modifier.
Commençons par éditer le layout (layoutcoucou.xml), pour cela nous allons rajouter un textview, un edittext et enfin un bouton.
Le textview contiendra l’intitulé de la question, l’edittext permettra à l’utilisateur d’entrer son nom et le bouton de retourner les informations.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="Quel est votre nom ?" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> <EditText android:id="@+id/editTextNom" android:layout_width="fill_parent" android:layout_height="wrap_content"> </EditText> <Button android:id="@+id/ButtonValider" android:text="Valider" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Button> </LinearLayout>
Ps : N’oubliez surtout pas les ID de chaque élément, ainsi que la déclaration de la seconde activité dans l’AndroidManisfest.xml
Dirigeons-nous sur le code de notre seconde activité et rajoutons une petite portion de code pour permettre à notre activité actuelle de retourner un résultat.
Tout d’abord, on récupère le bouton ainsi que le textview de notre Layout ; puis dans le listener de l’évènement onClick du bouton, nous allons renvoyer un résultat par l’intermédiaire de la méthode setResult() qui prend deux paramètres : le code de retour ainsi qu’un Intent si besoin est.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutcoucou);
Button boutonValider = (Button)findViewById(R.id.ButtonValider);
final EditText editTextNom = (EditText)findViewById(R.id.editTextNom);
boutonValider.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// On vérifie que la taille de la chaine de retour est supèrieur à 0
if(editTextNom.getText().length() > 0) {
// Création de l'intent
Intent intent = new Intent();
// On rajoute le nom saisie dans l'intent
intent.putExtra("Nom", editTextNom.getText().toString());
// On retourne le résultat avec l'intent
setResult(RESULT_OK, intent);
// On termine cette activité
finish();
}
}
});
}
Regardez bien les commentaires dans le code qui permettent de comprendre le fonctionnement !
Lancez l’application et cliquez sur le bouton “Cliquez ici !”. Si l’on clique sur le bouton “Retour” sur le téléphone, le retour est équivalent à RESULT_CANCELED et le message “Opération annulé” s’affiche.
Par contre, si l’on rentre un nom et que l’on clique sur le bouton “Valider”, le code de retour est RESULT_OK et un autre message s’affiche alors.
Et voilà, vous savez désormais utiliser la méthode setActivityForResult et le passage de données par le biais des intent !
Les intent à travers Android
Les intent, comme je le précise dans le tutoriel précédent, ne servent pas qu’à lancer une activité dans notre application. Ils peuvent aussi lancer d’autres actions à travers le système, je ne vais pas faire un cours complet sur ceux-ci mais juste vous donner quelques exemples d’utilisations pour y voir plus clair.
Par exemple, pour ouvrir une page web à partir de votre application, il suffit d’utiliser un autre constructeur de l’objet Intent.
La définition de celui-ci est la suivante : Intent(String action, Uri uri);
Son premier paramètre est une action définie dans la classe Intent et le second une Uri (Uniform Resource Identifiers). Je vous mets le lien de la documentation android à disposition pour cette classe :
http://developer.android.com/reference/android/net/Uri.html
Vous avez trouver comment ouvrir une page web ? Non et bien je vous montre :
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.fr"));
startActivity(intent);
On retrouve l’action ACTION_VIEW qui permet la visualisation, ainsi que l’url de la page web passée en paramètres au parser de données de la classe Uri fournie par le SDK.
Ps : Si vous avez plusieurs navigateurs sur votre plateforme, une fenêtre s’affichera vous demandant de choisir celui dans lequel vous désirez afficher la page.
Un dernier petit exemple pour la route allez !
Comment appeler une personne grâce aux intent, vous avez 10 minutes ! Tic Tac Tic Tac ^_^
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:0603040809"));
startActivity(intent);
L’action ACTION_CALL permet de notifier au système que l’on va émettre un appel, puis le numéro de téléphone préfixé par “tel:” sinon cela ne fonctionnera pas.
N’oubliez pas de rajouter la permission à votre application sinon vous n’aurez pas l’autorisation de passer un appel.
Allez dans le ficher AndroidManisfest.xml, puis dans l’onglet “Permissions”, faites “Add” et “Uses permission” avec comme valeur android.permission.CALL_PHONE.
Et voilà le tour est joué ça fonctionne ! On peut passer un coup de téléphone par l’intermédiaire de notre application.
A bientôt pour de nouvelles aventures !

Articles relatifs
-
http://SiteWeb Nicolas
-
http://SiteWeb Nicolas
-
http://SiteWeb anthony
-
http://SiteWeb mike
-
http://SiteWeb darkneo
-
http://SiteWeb darkneo
-
http://SiteWeb darkneo
-
http://clementhallet.be clément
-
jean
-
Julien
-
holaroid
Catégories
- Andengine (5)
- Android (20)
- Application (1)
- Articles (1)
- Non classé (2)
- Programmation (30)
Nuage
Commentaires récents
- Acesyde dans [Tutoriel Android] Partie 8 – Chargement des images et données
- Rezgui Marwen dans [Tutoriel Android] Partie 8 – Chargement des images et données
- Acesyde dans [Tutoriel Android] Partie 4 – Au menu de ce soir
- Monfront A dans [Tutoriel Android] Partie 4 – Au menu de ce soir
- Acesyde dans [Tutoriel AndEngine] Partie 5 – Arrête ton char !
Archives
- janvier 2012 (2)
- novembre 2011 (1)
- octobre 2011 (3)
- juillet 2011 (3)
- juin 2011 (1)
- décembre 2010 (4)
- octobre 2010 (3)
- septembre 2010 (5)
- juillet 2010 (8)
- avril 2010 (6)

Un article de






