Je n'ai pas besoin d'appeler le numéro de téléphone, j'ai juste besoin que le composeur s'ouvre avec le numéro de téléphone déjà affiché. Que Intent
dois-je utiliser pour y parvenir?
Réponses:
Deux façons d'y parvenir.
1) Besoin de démarrer le composeur via le code, sans interaction de l'utilisateur.
Vous avez besoin Action_Dial
,
utilisez le code ci-dessous, il ouvrira le numéroteur avec le numéro spécifié
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
Le préfixe «tel:» est requis , sinon l'exception suivante sera levée: java.lang.IllegalStateException: impossible d'exécuter la méthode de l'activité.
Action_Dial ne nécessite aucune autorisation.
Si vous souhaitez lancer l'appel directement sans intervention de l'utilisateur , vous pouvez utiliser l'action Intent.ACTION_CALL
. Dans ce cas, vous devez ajouter l'autorisation suivante dans votre AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) L'utilisateur doit cliquer sur la chaîne Phone_Number et démarrer l'appel.
android:autoLink="phone"
Vous devez utiliser TextView avec la propriété ci-dessous.
android: autoLink = "phone" android: linksClickable = "true" une propriété textView
Vous n'avez pas besoin d'utiliser l'intention ou d'obtenir une autorisation de cette manière.
Assez tard dans la réponse, mais si vous avez un TextView
numéro de téléphone dans lequel vous affichez le numéro de téléphone, vous n'avez pas du tout besoin de gérer les intentions, vous pouvez simplement utiliser l'attribut XML android:autoLink="phone"
et le système d'exploitation lancera automatiquement une ACTION_DIAL
intention.
Comme @ashishduh mentionné ci-dessus, l'utilisation android:autoLink="phone
est également une bonne solution. Mais cette option a un inconvénient, elle ne fonctionne pas avec toutes les longueurs de numéro de téléphone. Par exemple, un numéro de téléphone de 11 numéros ne fonctionnera pas avec cette option. La solution consiste à faire précéder vos numéros de téléphone du code du pays.
Exemple:
08034448845
ne fonctionnera pas
mais +2348034448845
va
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
C'est ainsi que vous pouvez ouvrir directement le numéro attribué à l'étiquette EditText sur le numéroteur.
Ajouter une autorisation dans le manifeste:
<uses-permission android:name="android.permission.CALL_PHONE" />
Créer un bouton ou tout autre exemple de widget: btnCall
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel: +98990*******");
startActivity(callIntent);
}
});