0% ont trouvé ce document utile (0 vote)
27 vues30 pages

Itents& Services

Transféré par

Hajar Berrada
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
27 vues30 pages

Itents& Services

Transféré par

Hajar Berrada
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Développement Android/Interfaces Graphiques

Séance 4
Intents & Services

23/10/2023 FST/ FES SICOM/S3 1


Développement Android/Intents

Intents
Des applications Android qui nécessitent plusieurs activités, avec une navigation
entre elles

Un intent est un objet représentant une action quelconque à effectuer.

23/10/2023 FST/ FES SICOM/S3 2


Développement Android/Intents
Communications entre applications
❑ La communication interne du système Android est basée sur l’envoi et la
réception de messages exprimant l’intention d’une action,

❑ Description abstraite d’une opération à effectuer

❑ émis à destination d’un autre composant de la même application (une activité,


un service, etc.) ou celui d’une toute autre application.

❑ La communication à l’aide de l’objet Intent

23/10/2023 FST/ FES SICOM/S3 3


Développement Android/Intents

Intents

Trois types de composants applicatifs sont actives via des


intentions (Intents)
➢Activity,
➢ Service
➢ BroadcastReceveir

https://developer.android.com/reference/android/content/Intent
23/10/2023 FST/ FES SICOM/S3 4
Développement Android/Intents

Intents/Déclarer des intentions

Dans le fichier manifests.xml


<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"
/>
</intent-filter>

https://developer.android.com/reference/android/content/Intent
23/10/2023 FST/ FES SICOM/S3 5
Développement Android/Intents

Intents/explicites & implicites

23/10/2023 FST/ FES SICOM/S3 6


Développement Android/Intents

Intents/explicites & implicites

❑ Intent « explicite »
il suffit que le champ composant soit renseigné. Ce champ permet de définir
le destinataire de l’Intent, celui qui devra le gérer. Il est constitué de:
➢ package où se situe le composant
➢ nom du composant.

❑les Intents « implicites »


on ne connaît pas de manière précise le destinataire de l’Intent, donc il faut
renseigner d'autres champs pour laisser Android déterminer qui est capable
de réceptionner cet Intent. Il faut au moins fournir deux informations
essentielles :
➢ Une action : ce qu'on désire que le destinataire fasse.
➢ Un ensemble de données : sur quelles données le destinataire doit effectuer
son action.
23/10/2023 FST/ FES SICOM/S3 7
Développement Android/Intents

Intents/explicites & implicites

Propriétés de Intent
❑ action : action à exécuter (ACTION_VIEW, etc)
❑ data : données pour réaliser l’action, par ex. un n° de tél. pour
ACTION_CALL. Sous la forme d’un Data URI : ex. tel: 0231456543 ou pour
voir un contact content://contacts/people/1
❑ category : informations complémentaires
❑ type : spécifie un type MIME (géré par l’objet Intent)
❑ component : spécifier le composant à invoquer (Intent explicite)
❑ extras : ensemble d’informations complémentaires
23/10/2023 FST/ FES SICOM/S3 8
Développement Android/Intents

Intents/explicites & implicites

L’action d’un Intent est une chaîne de caractères qui symbolise le traitement à
déclencher.
Exemple:
➢ Intent.ACTION_WEB_SEARCH pour réaliser une recherche sur Internet
➢ Intent.ACTION_CALL pour passer un appel téléphonique.
Les données détaillent l’action de l’Intent dont elle dépend directement.
Exemple
ACTION_CALL, la donnée sera le numéro de téléphone à composer.

23/10/2023 FST/ FES SICOM/S3 9


Développement Android/Intents

Intents/explicites & implicites


ACTION_MAIN: action principale
ACTION_VIEW: visualiser une donnée
ACTION_ATTACH_DATAT: attachement de donnée
ACTION_EDIT: Edition de donnée
ACTION_PICK: Choisir un répertoire de donnée
ACTION_CHOOSER: menu de choix pour l'utilisateur
– EXTRA_INTENT contient l'Intent original, EXTRA_TITLE le titre du menu
ACTION_GET_CONTENT: obtenir un contenu suivant un type MIME
ACTION_SEND: envoyé un message (EXTRA_TEXT|EXTRA_STREAM) à un destinataire non
spécifié
ACTION_SEND_TO: on spécifie le destinataire dans l'URI
ACTION_INSERT: on ajoute un élement virge dans le répertoire spécifié par l'URI
ACTION_DELETE: on supprime l'élement désigné par l'URI
ACTION_PICK_ACTIVITY: menu de sélection selon l'EXTRA_INTENT mais ne lance pas
l'activité
ACTION_SEARCH: effectue une recherche
etc...
23/10/2023 FST/ FES SICOM/S3 10
Développement Android/Intents

Intents explicites/instanciation
❑ Intents pour une nouvelle activité
➢ Plusieurs façons de créer l'objet de type Intent qui permettra de lancer une nouvelle activité.
1. 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 intent= new Intent(FirstActivity.this, SecondActivity.class);
▪ Le premier paramètre de construction de l'Intent est en fait le contexte de l'application
2. Pour instancier une activité interne à son programme :

Intent intent = new Intent().setClass(this, Activity2Class.class);


Cette instruction déclare une intention associée à l'activité Activity2Class qui est une
classe de votre programme et this qui est l'activité courante.

23/10/2023 FST/ FES SICOM/S3 11


Développement Android/Intents

Intents explicites

❑Créez une activité complémentaire et l'appeler explicitement


❑ il faut déclarer l’activité dans le Manifest.xml
Activité est également ajoutée au Manifest du projet
<application
android:theme="@style/Theme.Tp2">
<activity android:name=".SecondActivity"></activity>
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

23/10/2023 FST/ FES SICOM/S3 12


Développement Android/Intents

Intents explicites
❑ Lancement d'une activité avec paramètres
➢ transmettre des informations

Les données complémentaires circulant dans un Intent sont appelées les extras et
sont des couples (clef, valeur).

Intent intent= new Intent( FirstActivity.this, SecondActivity.class);


intent.putExtra("message",txtinputdata.getText().toString());
startActivityForResult(intent,SECOND_CALL_ID);

23/10/2023 FST/ FES SICOM/S3 13


Développement Android/Intents

Intents explicites
❑ Lancement d'une activité avec paramètres
Pour récupérer une valeur reçue par l'activité appelée, il suffit de récupérer une copie de
l'Intent d'appel avec getIntent et d'y lire les extras, via les
méthodes getXXXExtra dédiées aux différents types de paramètre (où XXX représente le
type de données à récupérer):

String InputData=this.getIntent().getExtras().getString("message");
lblInputData.setText(InputData);

23/10/2023 FST/ FES SICOM/S3 14


Développement Android/Intents

Intents implicites

❑ Intents pour une nouvelle activité


➢ Pour faire un appel implicite, on utilise la notion d'action. On ajoutera généralement un URI permettant
de paramétrer l'action.
➢ L'ensemble des actions existantes par défaut sont définies ici :
https://developer.android.com/reference/android/content/Intent.html#constants

➢ Par exemple, pour ouvrir une page web, on pourra utiliser l'action ACTION_VIEW. Il suffit de fournir une
URL en tant qu'URI pour que ce soit un navigateur web qui soit sollicité.

➢ Si à l'inverse l'URI commence par l'action geo:, alors ce sera une application de lecture de carte qui sera
appelée.

23/10/2023 FST/ FES SICOM/S3 15


Développement Android/Intents

Intents implicites

❑ Intents pour une nouvelle activité

23/10/2023 FST/ FES SICOM/S3 16


Développement Android/Intents

Intents implicites

❑ Intents pour une nouvelle activité


➢ 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.
Button b = (Button)findViewById(R.id.Button01);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Uri telnumber = Uri.parse("tel:0667266328");
Intent call = new Intent(Intent.ACTION_DIAL, telnumber);
startActivity(call);
}});

23/10/2023 FST/ FES SICOM/S3 17


Développement Android/Intents

Intents
btnFermer.setOnClickListener(new View.OnClickListener() {
@Override
❑ Résultat d'une activité public void onClick(View v) {
➢Il est aussi possible de définir un résultat setResult(16);
d'activité, avant d'appeler explicitement finish(); }});
la fin d'une activité avec la méthode Et la classe parente peut filtrer ainsi:
finish(). protected void onActivityResult(int requestCode,
➢Dans ce cas, la méthode setResult int resultCode, Intent data){
permet d'enregistrer un code de retour if (requestCode == 48)
qu'il sera aussi possible de filtrer dans Toast.makeText(this, "Code de requête récupéré",
l'activité parente. Toast.LENGTH_LONG).show();
if (resultCode == 50)
Exemple: Toast.makeText(this, "Code de retour ok",
Toast.LENGTH_LONG).show();
}

23/10/2023 FST/ FES SICOM/S3 18


Développement Android/Intents

Intents

❑ Résultat d'une activité


➢ Les Intent permettent de transporter ➢ Lorsqu'on prépare un Intent et que l'on souhaite
des informations à destination de ajouter une information de type "clef -> valeur« on
l'activité cible. procéde ainsi:
➢ On appelle ces informations des Extra:
les méthodes permettant de les manipuler
sont getExtra et putExtra. Intent callactivity2 = new
Intent(getApplicationContext(), Activity2.class);
callactivity2.putExtra("login", "jfl");
startActivity(callactivity2);

23/10/2023 FST/ FES SICOM/S3 19


Développement Android/Intents

Intents

❑ Résultat d'une activité


Du côté de l'activité recevant l'Intent, on récupère l'information de la manière
suivante:
Bundle extras = getIntent().getExtras();
String s = new String(extras.getString("login"));

23/10/2023 FST/ FES SICOM/S3 20


Développement Android/Intents

Intents/exemple

❑ Résultat d'une activité/Activité parente

❑ public void onClick(View v) {


Intent intent= new Intent( FirstActivity.this, SecondActivity.class );
intent.putExtra("message",txtinputdata.getText().toString());
startActivityForResult(intent,SECOND_CALL_ID); }});

❑protected void onActivityResult(int requestCode, int resultCode, Intent data){


super.onActivityResult(requestCode,resultCode,data);
if(requestCode==SECOND_CALL_ID){
lblresulttxt.setText("result=="+resultCode);}

23/10/2023 FST/ FES SICOM/S3 21


Développement Android/Intents

Intents

❑ Résultat d'une activité/Activité 2


public void onClick(View v) {
Toast.makeText(getApplicationContext(), "Code de requête récupéré (je
sais d'ou je viens)",
Toast.LENGTH_LONG).show();
setResult(11);
finish();
}
});

23/10/2023 FST/ FES SICOM/S3 22


Développement Android/Intents

Nœud manifest/<uses-feature>

➢ https://developer.android.com/guide/topics/manifest/uses-feature-
element.html#features-reference
➢ <uses-feature>: hardware ciblé
Ex: proposer un logiciel pour faire des photographies à un téléphone qui ne possède
pas d'appareil photo.
➢ <uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"
android:required="true« />

23/10/2023 FST/ FES SICOM/S3 23


Développement Android/Intents

Nœud manifest

<?xml version="1.0" encoding="utf-8"?>


<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.fstfes.conceptavancee"
android:versionCode="1"
android:versionName="SICOM.0" >
<uses-sdk android:minSdkVersion="7"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="true" />
➢ android:maxSdkVersion
23/10/2023 FST/ FES SICOM/S3 24
Développement Android/Intents

<supports-screens>

le champs optionnel required permet de dire si l'absence de cette


dépendance doit interdire l'installation ou pas.

<supports-screens android:smallScreens="boolean"
android:normalScreens="boolean"
android:largeScreens="boolean"
android:xlargeScreens="boolean"/>

23/10/2023 FST/ FES SICOM/S3 25


Développement Android/Intents

Manifests/Le nœud <activity>

Ce nœud permet de décrire toutes les activités contenues dans notre application.
<activity android:name=".SpinnerActivity"></activity>
<activity android:name=".AdapterViewActivity" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

23/10/2023 FST/ FES SICOM/S3 26


Développement Android/Intents

Manifests/Permissions

https://developer.android.com/reference/android/Manifest.permission.html
<uses-permission android:name="android.permission.INTERNET" />

•android:name est le nom qui sera utilisé dans un uses-permission pour faire
référence à cette permission. Ce nom doit être unique.
•android:label est le nom qui sera indiqué à l'utilisateur.
•android:description est une description plus complète de cette
permission.
•android:icon il s'agit d'une icône qui est censée représenter la permission
(facultatif).
•android:protectionLevel indique le degré de risque du composant lié à
cette permission (normal, dangerous et signature).
23/10/2023 FST/ FES SICOM/S3 27
Développement Android/Intents

Exporter le fichier .APK vs AAB


APK: Android Package Kit

Les APK contiennent tous les fichiers et le code de l'application. Vous pouvez le
considérer comme un .zip fichier mais avec sa propre extension particulière.
➢ Android souligne plusieurs inconvénients liés à l'utilisation des APK:
•Taux de conversion plus bas
•Téléchargements plus lents
•Désinstallations plus élevées
•Taux de mise à jour plus bas

23/10/2023 FST/ FES SICOM/S3 28


Développement Android/Intents

Exporter le fichier .AAB

❑ An Android App Bundle (AAB) is a publishing format that includes all your app’s
compiled code and resources, and defers APK generation and signing to Google Play.

❑ Google Play uses your app bundle to generate and serve optimized APKs for each
device configuration, so only the code and resources that are needed for a specific
device are downloaded to run your app. You no longer have to build, sign, and
manage multiple APKs to optimize support for different devices, and users get
smaller, more-optimized downloads.

❑ https://developer.android.com/guide/app-bundle
23/10/2023 FST/ FES SICOM/S3 29
Développement Android/Intents

Internalisation de l’app

❑ traduire l’application/internationalisation

23/10/2023 FST/ FES SICOM/S3 30

Vous aimerez peut-être aussi