Ответы:
Два способа добиться этого.
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
Вам не нужно использовать намерение или получить разрешение таким образом.
Довольно поздно для ответа, но если у вас есть, TextView
что вы показываете номер телефона, то вам вообще не нужно иметь дело с намерениями, вы можете просто использовать атрибут XML, android:autoLink="phone"
и ОС автоматически инициирует ACTION_DIAL
Intent.
Как упоминалось выше @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 на номеронабирателе напрямую.
Добавить разрешение в манифесте:
<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);
}
});