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 android 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 android: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 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.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 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 !)