Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Android: Les intents

612 views

Published on

Ces slides présentent les Intents sous Android, les sous activitées et les BroadcastReceiver

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Android: Les intents

  1. 1. ANDROID: LES INTENTS MOHAMED BOURAOUI BOURAWI.MOHAMED@GMAIL.COM
  2. 2. LES INTENTS  Les Intents permettent de gérer l'envoi et la réception de messages afin de faire coopérer les applications.  Le but des Intents est de déléguer une action vers une autre application ou une autre activité de l'application courante.  Il y a plusieurs façons de créer l'objet de type Intent qui permettra de lancer une nouvelle activité. Si l'on passe la main à une activité interne à l'application, on peut créer l'Intent et passer la classe de l'activité ciblée par l'Intent: Intent login = new Intent(this, GiveLogin.class); startActivity(login); Le premier paramètre de construction de l'Intent est en fait le contexte de l'application. Dans certain cas, il ne faut pas mettre this mais faire appel à getApplicationContext() si l'objet manipulant l'Intent n'hérite pas de Context.
  3. 3. AJOUTER UNE INFORMATION  Les Intent permettent de transporter des informations à destination de l'activité cible. On appelle ces informations des Extra: les méthodes permettant de les manipuler sont putExtra et getExtra.  Lorsqu'on prépare un Intent et que l'on souhaite ajouter une information de type "clef  valeur" on procède ainsi: Intent callactivity2 = new Intent(this, GiveLogin. class); callactivity2.putExtra("login", "admin"); startActivity(callactivity2); Dans la classe destination (GiveLogin), on peut récupérer les extras, chacun à partir de sa clé, ainsi: Intent intentrecup= getIntent(); String loginTxt= intentrecup.getStringExtra("login");
  4. 4. EXEMPLE  Activité pour l’authentification  Activité pour l’accueil
  5. 5. EXEMPLE : COMPLÉTEZ PAR LE CODE NÉCESSAIRE Authentification.java Acceuil.java @Override public void onClick(View v) { Intent intent = new Intent(this, Acceuil.class); String monTexte = champ_nom.getText().toString(); intent.putExtra(extraMsg,monTexte); startActivity(intent); } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_acceuil); textV = (TextView)findViewById(R.id.msgText); Intent intent = getIntent(); String message = intent.getStringExtra(Authentification.extraMsg); textV.setText("Bonjour "+message); } ?? ??
  6. 6. LES INTENTS (2)  S'il s'agit de passer la main à une autre application, on donne au constructeur de l'Intent les données et l'URI cible: l'OS est chargé de trouver une application pouvant répondre à l'Intent. Exemple : La composition d’un numéro Button btn = (Button)findViewById(R.id.btn_call); b.setOnClickListener(new OnClickListener() { public void onClick(View v) { Uri telnumber = Uri.parse("tel:0248484000"); Intent call = new Intent(Intent.ACTION_DIAL, telnumber); startActivity(call); } }); Lance l’application de composition d’un numéro Ne pas oublier d’ajouter les autorisations nécessaires
  7. 7. LES SOUS-ACTIVITÉS  Une activité peut démarrer une activité « enfant » ou sous activité. Le parent attend dans ce cas un résultat en retour.  Etapes: 1. Création de l’intent 2. Lancement de la sous activité startActivityForResult(intent,ID_REQUEST_CODE); Activité parent Activité fille 3. Récupération de l'Intent + extraction 4. Traitement 5.Création du Bundle retour 6. Fin activité et renvoie Bundle protected void onActivityResult( int requestCode, int resultCode, Intent data) 7. Gestionnaire pour la réception du mesage en retour
  8. 8. LES SOUS-ACTIVITÉS: EXEMPLE Activité parent Activité enfant 1 2 4 1 3 4 Lancer l’activité fille pour la saisie de l’âge 2 • Récupérer l’intent • Traitement • Création du Bundle retour Fin de l’activité et renvoie du Bundle 3
  9. 9. final int ID_REQUEST_CODE = 0; btn_saisie_age = (Button)findViewById(R.id.btn_saisie_age); btn_saisie_age.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(getApplicationContext(),Saisie_age.class); startActivityForResult(i, ID_REQUEST_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { txt_resultat = (TextView)findViewById(R.id.txtRes); if(requestCode == ID_REQUEST_CODE) { if(resultCode == RESULT_OK) { txt_resultat.setText(data.getStringExtra("resultat")); } if(resultCode == RESULT_CANCELED) { Toast.makeText(getApplicationContext(), "Saisie annulée. Merci de saisir age de nouveau", Toast.LENGTH_SHORT).show(); }}} Les sous-activités : Activité « parent »
  10. 10. Les sous-activités : Activité « fille » btn_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setResult(RESULT_CANCELED); finish(); } }); btn_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(champ_saisie_age.getText().length() > 0){ Intent returnIntent = new Intent(); returnIntent.putExtra("resultat",champ_saisie_age.getText().toString()); setResult(RESULT_OK, returnIntent);} else{ Toast.makeText(getApplicationContext(),"Veuillez vérifier votre saisie",Toast.LENGTH_SHORT).show();} finish();} });
  11. 11. BROADCASTER UNE INFORMATION  Il est possible d'utiliser un objet Intent pour broadcaster un message à but informatif. Ainsi, toutes les applications pourront capturer ce message et récupérer l'information. Intent broadcast = new Intent("demo.android.broadcast"); broadcast.putExtra("extra", "msgExtra"); sendBroadcast(broadcast); On peut récupérer les données à l'aide de la méthode getExtras dans l'objet Bundle qui est dans l'Intent: Bundle extra = intent.getExtras(); String val = extra.getString("extra");
  12. 12. LES CATÉGORIES D’INTENTS  Les catégories d'Intent permettent de grouper les applications par grands types de fonctionnalités (clients emails, navigateurs, players de musique, etc...).  Par exemple, on trouve les catégories suivantes qui permettent de lancer:  DEFAULT: catégorie par défaut  BROWSABLE: une activité qui peut être invoquée depuis un clic sur un navigateur web  APP_MARKET: une activité qui permet de parcourir le market de télécharger des applications
  13. 13. FILTRER LES INTENTS  Une activité sous android peut filtrer les messages véhiculant par des intents et capter les messages qui les intéressent.  Pour ce faire, on peut définir des filtres d’intent dans le AndroidManifest.xml de l’application.  On peut utiliser plusieurs niveaux de filtrage:  action: identifie le nom de l'Intent.  category: permet de filtrer une catégorie d'action (DEFAULT, BROWSABLE, ...)  data: filtre sur les données du message.  par exemple en utilisant android:host pour filtrer un nom de domaine particulier
  14. 14. EXEMPLE: EMISSION ET RÉCEPTION D’UN MESSAGE EN BROADCAST @Override public void onClick(View v) { Intent i = new Intent("android.broadcast.demo"); sendBroadcast(i); } Activity.java MyReceiver.java public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Message reçu en Broadcast", Toast.LENGTH_LONG).show(); }
  15. 15. EXEMPLE: EMISSION ET RÉCEPTION D’UN MESSAGE EN BROADCAST AndroidManifest.xml<application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".Acceuil" android:label="@string/title_activity_acceuil"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity> <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.broadcast.demo" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>
  16. 16. LES MESSAGES NATIFS  Il y’a toujours des messages qui sont diffusés par l’OS. Par exemple: • ACTION_BOOT_COMPLETED: diffusé lorsque le système a fini son boot • ACTION_SHUTDOWN: diffusé lorsque le système est en cours d'extinction • ACTION_SCREEN_ON / OFF: allumage / extinction de l'écran • ACTION_POWER_CONNECTED / DISCONNECTED: connexion / perte de l'alimentation • ACTION_TIME_TICK: une notification envoyée toutes les minutes … Tous les messages des Intents, vous pouvez les consulter sur: http://developer.android.com/reference/android/content/Intent.html
  17. 17. LES MESSAGES NATIFS  Autres actions permettent de déléguer autres applications, exemples: • ACTION_CALL (ANSWER, DIAL): passer/réceptionner/afficher un appel • ACTION_SEND: envoyer des données par SMS ou E-mail • ACTION_WEB_SEARCH: rechercher sur internet

×