Мне не нужно звонить по номеру телефона, мне просто нужно, чтобы номер вызывающего абонента был открыт с уже указанным номером телефона. Какую Intent
следует использовать для достижения этой цели?
Как я могу открыть дозвон с номером телефона?
Ответ 1
Два способа добиться этого.
1) Нужно запустить звонилку через код, без взаимодействия с пользователем.
Вам нужен Action_Dial
,
используйте код ниже, он откроет номеронабиратель с указанным номером
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);
Префикс 'tel:' является обязательным, в противном случае будет выдано следующее исключение: java.lang.IllegalStateException: Не удалось выполнить метод действия.
Action_Dial не требует никакого разрешения.
Если вы хотите инициировать вызов напрямую, без взаимодействия с пользователем, вы можете использовать действие Intent.ACTION_CALL
. В этом случае вы должны добавить следующее разрешение в ваш AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
2) Нужно, чтобы пользователь щелкнул строку Phone_Number и начал звонок.
android:autoLink="phone"
Вам нужно использовать TextView со свойством ниже.
android: autoLink = "phone" android: linksClickable = "true" свойство textView
Вам не нужно использовать намерение или получить разрешение таким образом.
Ответ 2
Довольно поздний ответ, но если у вас есть TextView
, в котором вы показываете номер телефона, вам вообще не нужно иметь дело с намерениями, вы можете просто использовать атрибут XML android:autoLink="phone"
и ОС автоматически инициирует ACTION_DIAL
Intent.
Ответ 3
Как упоминалось выше @ashishduh, использование android:autoLink="phone
также является хорошим решением. Но этот вариант имеет один недостаток, он не работает со всеми номерами телефонов. Например, номер телефона из 11 номеров не будет работать с этой опцией. Решение состоит в том, чтобы префикс ваших телефонных номеров с кодом страны.
Пример:
08034448845
не будет работать
но +2348034448845
будет
Ответ 4
<TextView
android:id="@+id/phoneNumber"
android:autoLink="phone"
android:linksClickable="true"
android:text="+91 22 2222 2222"
/>
Вот как вы можете напрямую назначить назначенный номер метки EditText на dialer.
Ответ 5
Добавить разрешение в манифесте:
<uses-permission android:name="android.permission.CALL_PHONE" />
Сделать кнопку или любой пример виджета: 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);
}
});
Ответ 6
Ладно, будет очень поздно, чтобы ответить на этот вопрос. Но вот только один пример, если вы хотите сделать это в Kotlin.
val intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:<number>")
startActivity(intent)
Думаю, это может кому-то помочь.