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?
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?
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 XMLandroid:autoLink="phone"
et le système d'exploitation lancera automatiquement uneACTION_DIAL
intention.la source
D'accord, ce sera une réponse extrêmement tardive à cette question. Mais voici juste un exemple si vous voulez le faire à Kotlin .
val intent = Intent(Intent.ACTION_DIAL) intent.data = Uri.parse("tel:<number>") startActivity(intent)
Je pensais que cela pourrait aider quelqu'un.
la source
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 pasmais
+2348034448845
vala source
<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.
la source
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); } });
la source