web-dev-qa-db-fra.com

Comment faire pour que le composeur s'ouvre avec le numéro de téléphone affiché?

Je n'ai pas besoin d'appeler le numéro de téléphone, j'ai juste besoin que le numéroteur s'ouvre avec le numéro de téléphone déjà affiché. Quel Intent devrais-je utiliser pour y parvenir?

174
Nik

Deux façons de le réaliser.

1) Nécessité de démarrer le numéroteur via un code, sans interaction de l'utilisateur.

Vous avez besoin de Action_Dial,

utiliser 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 exécuter la méthode de l'activité.

Action_Dial ne nécessite aucune autorisation.

Si vous souhaitez lancer l'appel directement sans interaction de l'utilisateur , vous pouvez utiliser l'action Intent.ACTION_CALL. Dans ce cas, vous devez ajouter l’autorisation suivante dans votre fichier AndroidManifest.xml:

<uses-permission Android:name="Android.permission.CALL_PHONE" />

2) L'utilisateur doit cliquer sur la chaîne Phone_Number et lancer l'appel.

Android:autoLink="phone" 

Vous devez utiliser TextView avec la propriété ci-dessous.

Android: autoLink = "téléphone" Android: linksClickable = "true" une propriété textView

Vous n'avez pas besoin d'utiliser l'intention ou d'obtenir la permission de cette manière.

491
AAnkit

Assez tard dans la réponse, mais si vous avez une TextView que vous affichez le numéro de téléphone, vous n'avez alors pas besoin de gérer les intentions du tout, vous pouvez simplement utiliser l'attribut XML Android:autoLink="phone" et le système d'exploitation lancera automatiquement un ACTION_DIAL Intent.

50
ashishduh

Comme @ashishduh mentionné ci-dessus, utiliser Android:autoLink="phone est également une bonne solution. Mais cette option présente un inconvénient: elle ne fonctionne pas avec toutes les longueurs de numéros 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 à préfixer vos numéros de téléphone avec le code du pays.

Exemple:

08034448845 ne fonctionnera pas

mais +2348034448845 sera

2
<TextView
 Android:id="@+id/phoneNumber"
 Android:autoLink="phone"
 Android:linksClickable="true"
 Android:text="+91 22 2222 2222"
 />

Vous pouvez ainsi ouvrir directement le numéro attribué à l'étiquette EditText sur le numéroteur.

1
saurabh yadav

Ajouter une autorisation dans le manifeste:

<uses-permission Android:name="Android.permission.CALL_PHONE" />

Bouton Make ou n'importe quel 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);

    }
});
0
Pouria Hemati

D'accord, il va être extrêmement tardif pour répondre à cette question. Mais voici juste un exemple si vous voulez le faire dans Kotlin.

val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)

Je pensais que cela pourrait aider quelqu'un.

0
gprathour