Ich muss die Telefonnummer nicht anrufen, sondern muss nur den Dialer mit der bereits angezeigten Telefonnummer öffnen. Mit welchem Intent
soll ich das erreichen?
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.
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.
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
<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.
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);
}
});
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.