Nie muszę dzwonić na numer telefonu, po prostu potrzebuję dialera, aby otworzyć numer telefonu już wyświetlony. Czego Intent
powinienem użyć, aby to osiągnąć?
Nie muszę dzwonić na numer telefonu, po prostu potrzebuję dialera, aby otworzyć numer telefonu już wyświetlony. Czego Intent
powinienem użyć, aby to osiągnąć?
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 zainicjujeACTION_DIAL
zamiar.źródło
Ok, odpowiedź na to pytanie będzie wyjątkowo późna. Ale tutaj jest tylko jedna próbka, jeśli chcesz to zrobić w Kotlin .
Myślałem, że to może komuś pomóc.
źródło
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łaale
+2348034448845
będzieźródło
W ten sposób można bezpośrednio otworzyć numer przypisany do etykiety EditText na dialer.
źródło
Dodaj zezwolenie w manifeście:
Utwórz przycisk lub dowolny przykład widżetu:
btnCall
źródło