wake-up-neo.com

Wie kann ich den Dialer mit der angezeigten Telefonnummer öffnen?

Ich muss die Telefonnummer nicht anrufen, sondern muss nur den Dialer mit der bereits angezeigten Telefonnummer öffnen. Mit welchem ​​Intent soll ich das erreichen?

174
Nik

Zwei Möglichkeiten, dies zu erreichen.

1) Der Dialer muss über einen Code ohne Benutzerinteraktion gestartet werden.

Du brauchst Action_Dial,

verwenden Sie den folgenden Code, um den Dialer mit der angegebenen Nummer zu öffnen

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent); 

Das Präfix 'tel:' ist erforderlich , andernfalls wird die folgende Ausnahme ausgelöst: Java.lang.IllegalStateException: Methode von konnte nicht ausgeführt werden die Aktivität.

Für Action_Dial ist keine Berechtigung erforderlich.

Wenn Sie den Anruf direkt ohne Benutzerinteraktion einleiten möchten , können Sie action Intent.ACTION_CALL. In diesem Fall müssen Sie die folgende Berechtigung in Ihrer AndroidManifest.xml hinzufügen:

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

2) Der Benutzer muss auf Phone_Number klicken und den Anruf starten.

Android:autoLink="phone" 

Sie müssen TextView mit der folgenden Eigenschaft verwenden.

Android: autoLink = "phone" Android: linksClickable = "true" eine TextView-Eigenschaft

Sie müssen weder Vorsatz noch Erlaubnis auf diese Weise verwenden.

491
AAnkit

Die Antwort ist ziemlich spät, aber wenn Sie ein TextView haben, in dem Sie die Telefonnummer anzeigen, müssen Sie sich überhaupt nicht mit Absichten befassen. Sie können einfach das XML-Attribut Android:autoLink="phone" und das Betriebssystem startet automatisch ein ACTION_DIAL Intent.

50
ashishduh

Wie @ashishduh oben erwähnt, mit Android:autoLink="phone ist auch eine gute lösung. Diese Option hat jedoch einen Nachteil: Sie funktioniert nicht mit allen Telefonnummernlängen. Beispielsweise funktioniert eine Telefonnummer mit 11 Nummern mit dieser Option nicht. Die Lösung besteht darin, Ihren Telefonnummern die Landesvorwahl voranzustellen.

Beispiel:

08034448845 funktioniert nicht

aber +2348034448845 werden

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

Auf diese Weise können Sie die mit EditText beschriftete Nummer direkt auf dem Dialer öffnen.

1
saurabh yadav

Berechtigung im Manifest hinzufügen:

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

Make button oder ein beliebiges Widget-Beispiel: 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

Okay, es wird sehr spät sein, diese Frage zu beantworten. Aber hier ist nur ein Beispiel, wenn Sie es in Kotlin tun möchten.

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

Dachte, es könnte jemandem helfen.

0
gprathour