Les ressources & Intent
Hakim MOKEDDEM
École nationale Supérieure d’Informatique
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un Intent
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un Intent
Les ressources
Ressource. Un contenu statique utilisé dans l'application.
Ressources images Ressources
chaine de caractères
Les ressources
Les ressources sont utiles pour gérer le changement de
configuration.
Exemple.
• Supporter plusieurs langues.
• Supporter les différentes tailles et orientations d’écran.
Les ressources
Exemple 1. Chaine de caractères statique
<string name=“msg">Envoyer</string>
Accès au niveau du code
Text(
text = stringResource([Link])
)
Les ressources
Exemple 2. Chaine de caractères avec des paramètres
<string name="congratulate">Happy %1$s
%2$d</string>
Accès au niveau du code
Text(
text = stringResource([Link], "New
Year", 2021)
)
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un Intent
Le contexte sous Android
Context est une classe abstraite fournie par Android et
utilisée pour effectuer diverses opérations comme:
• Accéder aux ressources.
• Lancement des activités, des services, etc.
• Utiliser les base de données.
• Accéder aux services système tels que la localisation,
etc.
Le contexte sous Android
Deux types de Context: Activity et Application
Le contexte sous Android
• Accès au contexte d’un composable
@Composable
fun MyComposable(
context: Context = [Link]
){
}
• Accès au contexte d’une application
context: Context = applicationContext.
Le contexte sous Android
• Utiliser le contexte Activity lorsqu'on a besoin d’un
contexte qui dépend du cycle de vie de l’activité. Par
exemple, demander une permission, afficher un
message Toast, etc.
• Utiliser le contexte Application lorsqu'on a besoin d’un
contexte de longue durée de vie. Par exemple, accès à
une base de données local, exécuter un service en
arrière plan.
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un Intent
Qu'est ce qu'un Intent ?
Un composant Android pour lancer des opérations
Lancer une activité
Lancer une
application externe
Lancement d'une activité
Cas 1. Sans envoi de données.
val intent = Intent(this,OtherActivity::[Link])
[Link](intent)
Cas 2. Envoi de données de type primitif.
val intent = Intent(this,OtherActivity::[Link])
[Link]("id", 5)
[Link]("name", "Bill")
}
[Link](intent)
Lancement d'une activité
Cas 3. Envoi de données de type objet (La classe de
l'objet doit implémenter l'interface Serializable).
Exemple
data class Person(val id:Int,val name:String):Serializable
Au niveau de l'activité
val intent = Intent(this,OtherActivity::[Link])
[Link]("pr",Person(5,"Bill Gates"))
[Link](intent)
Récupération des données
envoyées
• Lancement de Intent
val intent = Intent(this,Activity2::[Link])
[Link]("id",5)
[Link]("pr",Person(5,"Bill Gates"))
}
[Link](intent)
• Récupération de Intent dans Activity2
1. val id= [Link]("id",0) //valeur par défaut 0
2. val person = [Link]("pr") as Person
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un Intent
Lancement d'une application
externe
Un Intent permet de lancer une application installée sur le
dispositif mobile.
Ouvrir l'interface
Lancer un appel
d'appel
Lancer la caméra Afficher un lieu sur
Google Maps
Partager un message
Lancement d'une application
externe
1. Ouvrir l'interface d'appel
Exemple
val data = [Link]("[Link]
val intent = Intent(Intent.ACTION_DIAL, data)
[Link](intent)
Lancement d'une application
externe
2. Afficher un lieu sur Google Maps
Exemple
val latitude = ....
val longitude = ....
val data = [Link]("geo:$latitude,$longitude")
val intent = Intent(Intent.ACTION_VIEW,data)
[Link](intent)
Lancement d'une application
externe
3. Ouvrir une page web
Exemple
val data = [Link]("[Link]
val intent = Intent(Intent.ACTION_VIEW, data)
[Link](intent)
Lancement d'une application
externe
4. Partager un message
Exemple
val intent= Intent(Intent.ACTION_SEND)
[Link](Intent.EXTRA_TEXT, "This is my text to send.")
[Link] = "text/plain"
val shareIntent = [Link](intent, null)
[Link](shareIntent)
Plan
• Les ressources
• Utilisation des Intent
– Le contexte sous Android
– Lancement des activités
– Lancement des applications externes
– Récupération du résultat d'un IntentÒ
Récupération du résultat d'un
Intent
Problème. Comment récupérer le résultat d'un Intent au
niveau de l'activité ?
Exemple
• Lancer la caméra, prendre une photo et l'afficher sur
l'interface de l'activité.
• Le résultat dans ce cas est la photo prise par la caméra.
Récupération du résultat d'un
Intent
Utilisation de rememberLauncherForActivityResult et
ActivityResultContracts
• rememberLauncherForActivityResult: utilisé pour
lancer l’activité dans le but de récupérer le résultat.
• ActivityResultContracts: utilisé pour spécifier le type
d’activité à lancer. Par exemple, prendre une photo,
capturer une vidéo, etc.
Récupération du résultat d'un
Intent
Exemple. Prendre une photo et l'afficher sur l'interface
1. Lancer le rememberLauncherForActivityResul et
récupérer le résultat
val result = remember { mutableStateOf<Bitmap?>(null) }
val launcher =
rememberLauncherForActivityResult(ActivityResultContracts.
TakePicturePreview()) {
[Link] = it }
Récupération du résultat d'un
Intent
Exemple. Prendre une photo et l'afficher sur l'interface
2. Afficher de l’image
[Link]?.let {
Image([Link]() , contentDescription =
null) }
Références
1. [Link]
2. [Link]
common
3. [Link]
activities-architecture-96a23b783036