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


Мне не нужно звонить по номеру телефона, мне просто нужно, чтобы номеронабиратель открылся с уже отображенным номером телефона. Что Intent я должен использовать для достижения этой цели?

4 148

4 ответа:

Два способа ее достижения.

1) нужно запустить дозвонщик через код, без взаимодействия с пользователем.

Вам нужно Action_Dial,

Используйте приведенный ниже код, он откроет номеронабиратель с указанным номером

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent); 

Требуется префикс 'tel:' , в противном случае будет выдано следующее исключение: java.яз..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= " телефон" android: linksClickable= "true" свойство textView

Вам не нужно использовать намерение или получать разрешение через именно такой образ.

Довольно поздно с ответом, но если у вас есть TextView, в котором вы показываете номер телефона, то вам вообще не нужно иметь дело с намерениями, вы можете просто использовать атрибут XML android:autoLink="phone", и ОС автоматически инициирует намерение ACTION_DIAL.

Как @ashishduh упоминалось выше, использование android:autoLink="phone также является хорошим решением. Но этот вариант имеет один недостаток, он не работает со всеми длинами телефонных номеров. Например, номер телефона из 11 номеров не будет работать с этой опцией. Решение состоит в том, чтобы префиксировать ваши телефонные номера с кодом страны.

Пример:

08034448845 не получится

Но +2348034448845 будет

<TextView
 android:id="@+id/phoneNumber"
 android:autoLink="phone"
 android:linksClickable="true"
 android:text="+91 22 2222 2222"
 />

Это то, как вы можете открыть EditText label присвоенный номер на dialer напрямую.