Телефония и коммуникация

Телефонные звонки

Последнее обновление: 30.10.2015

Большинство гаджетов с ОС Android так или иначе являются мобильными телефонами или поддерживают функцию голосовых звонков, как некоторые планшеты и фаблеты. Android предоставляет необходимое API, используя которое, позволит выполнить некоторые функции телефона.

Осуществлять звонки довольно легко. Пусть у нас в файле интерфейса объявлено текстовое поле для ввода номера и кнопка для непосредственного звонка:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText android:id="@+id/number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="true"
        android:hint="Введите номер"
        android:editable="true"
        android:singleLine="true" />
    <Button android:id="@+id/dial"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Позвонить"
        android:onClick="dial" />
</LinearLayout>

В коде activity пропишем обработчик кнопки:

package com.example.eugene.telephoneapp;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
import android.net.Uri;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void dial(View v) {
	
        EditText number=(EditText)findViewById(R.id.number);
        String toDial="tel:"+number.getText().toString();
        startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(toDial)));
    }
}

Для инициализации звонка надо использовать объект Intent с параметром Intent.ACTION_DIAL, а также номером телефона. Однако в этом случае после ввоа номера и нажатии кнопки нас перекинет на стандартный экран ввода номера телефона, где уже будет введен номер и надо будет только нажать на кнопку звонка:

Intent.ACTION_DIAL in Android

Но такое действие не всегда удобно, так как пользователю приходится еще на стандартном экране нажимать на кнопку звонка. Но мы можем испраивть данную ситуацию, используя вместо Intent.ACTION_DIAL значение Intent.ACTION_CALL:

public void dial(View v) {
	
    EditText number=(EditText)findViewById(R.id.number);
    String toDial="tel:"+number.getText().toString();
    startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(toDial)));
}

Но при этом также надо добавить разрешение в файл манифеста:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.eugene.telephoneapp" >
    <uses-permission android:name="android.permission.CALL_PHONE" />

Теперь звонки будут происходить сразу после нажатия кнопки.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850