Odpowiedzi:
Dwa sposoby na osiągnięcie tego.
1) Konieczność uruchomienia dialera za pomocą kodu, bez interakcji użytkownika.
Trzeba Action_Dial
,
użyj poniższego kodu spowoduje otwarcie Dialera z określonym numerem
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
Prefiks „tel:” jest wymagany , w przeciwnym razie zostanie zgłoszony następujący wyjątek: java.lang.IllegalStateException: Nie można wykonać metody działania.
Action_Dial nie wymaga żadnego pozwolenia.
Jeśli chcesz zainicjować połączenie bezpośrednio bez interakcji użytkownika , możesz użyć akcji Intent.ACTION_CALL
. W takim przypadku musisz dodać następujące uprawnienie w pliku AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) Musisz kliknąć ciąg numeru telefonu i rozpocząć połączenie.
android:autoLink="phone"
Musisz użyć TextView z poniższą właściwością.
android: autoLink = "phone" android: linksClickable = "true" właściwość textView
W ten sposób nie musisz używać zamiaru ani uzyskiwać pozwolenia.
Dość późno na odpowiedź, ale jeśli masz TextView
numer, na którym wyświetlasz numer telefonu, to wcale nie musisz zajmować się zamiarami, możesz po prostu użyć atrybutu XML, android:autoLink="phone"
a system operacyjny automatycznie zainicjuje ACTION_DIAL
zamiar.
Jak wspomniano powyżej w @ashishduh, używanie android:autoLink="phone
jest również dobrym rozwiązaniem. Ale ta opcja ma jedną wadę, nie działa z wszystkimi długościami numerów telefonów. Na przykład numer 11 numerów nie będzie działał z tą opcją. Rozwiązaniem jest prefiksowanie numerów telefonów kodem kraju.
Przykład:
08034448845
nie zadziała
ale +2348034448845
będzie
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
W ten sposób można bezpośrednio otworzyć numer przypisany do etykiety EditText na dialer.
Dodaj zezwolenie w manifeście:
<uses-permission android:name="android.permission.CALL_PHONE" />
Utwórz przycisk lub dowolny przykład widżetu: 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);
}
});