Service d'appel téléphonique
Pour appeler une personne, vous devez passer par une activité. Vous vous contenterez d'indiquer à cette activité le n° de téléphone à composer.
Deux solutions sont alors possibles:
- Afficher le n° de téléphone que l'on désire appeler, mais laisser le choix à l'utilisateur d'appeler ou non.
- Composer immédiatement le n° de téléphone.
Le principe est
de faire déclencher un service par androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) répondant à
l'action que l'on désire faire, sans que vous ayez besoin de connaître
le nom de ce service (cf. intention implicite,
démarrage d'une activité).
DIAL
Dans le premier cas, vous aurez besoin de déclencher le "dialer", c'est à dire l'application permettant à un utilisateur de composer un n° de téléphone.
Pour cela, vous devez:
Avoir un n° de téléphone que vous parserez ensuite au format URI. Le n° de téléphone doit être précédé par tel:
Exemple:
String toDial="tel:1234567890";
Puis déclencher une activité sur l'action ACTION_DIAL
startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(toDial)));
CALL
Dans le second cas, le principe est fort similaire, seule l'action de l'intention change puisque vous déclenchez un appel directement, en utilisant l'action ACTION_CALL.
Evidemment, pour pouvoir déclencher un appel, vous devrez avoir la permission via le fichier AndroidManifest.xml:
<uses-permission androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...):name="android.permission.CALL_PHONE"/>
Puis le code sera le suivant:
String toCall="tel:1234567890"; // Juste un changement de nom de la variable...
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toCall)));
Exemple
En faut-il vraiment ?
Voici le fichier main.xml
Pas courant, mais pour que le code javaLangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) puisse récupérer le n° de téléphone positionné dans cet objet, je mets un id sur le textview lié au n° de téléphone. C'est ce n° qui sera passé au service.
Programme PhoneActivity.javaLangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) déclenchant un appel immédiat vers le n° 1234567890.
Ce n° est déclaré dans le fichier Strings.xml et sera récupéré dans le code JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) via l'objet textview (cf. main.xml) qui récupère justement la valeur positionnée dans Strings.xml lors de l'exécution votre activité.
Le fichier Strings.xml est donc essentiellement utilisé pour passer en un seul endroit le n° de téléphone à appeler:
Et le fichier AndroidManifest.xml pour déclarer votre activité et surtout la permission "android.permission.CALL_PHONE":
Voilà, vous pouvez maintenant faire facilement un programme appelant directement madame (ou monsieur) sans avoir à parcourir l'annuaire...
(Evidemment, vous pouvez passer par la création d'un raccourci sur un contact précis, mais ce serait moins drôle !)