Как я могу открыть дозвон с номером телефона?

Мне не нужно звонить по номеру телефона, мне просто нужно, чтобы номер вызывающего абонента был открыт с уже указанным номером телефона. Какую 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)

Думаю, это может кому-то помочь.