Відповіді:
Два шляхи її досягнення.
1) Потрібно запустити дозвон через код, без взаємодії з користувачем.
Вам потрібно Action_Dial
,
Використовуючи код нижче, він відкриє Dialer із вказаним номером
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 = "телефон" 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 на набірника.
Додати дозвіл у маніфест:
<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);
}
});