Учебники

Android — телефонные звонки

Android предоставляет встроенные приложения для телефонных звонков, в некоторых случаях нам может понадобиться сделать телефонный звонок через наше приложение. Это можно легко сделать, используя неявные намерения с соответствующими действиями. Также мы можем использовать классы PhoneStateListener и TelephonyManager, чтобы отслеживать изменения в некоторых состояниях телефонии на устройстве.

В этой главе перечислены все простые шаги по созданию приложения, которое можно использовать для совершения телефонного звонка. Вы можете использовать Android Intent для совершения телефонного звонка, вызывая встроенную функцию телефонного звонка Android. В следующем разделе описаны различные части нашего объекта Intent, необходимые для совершения вызова.

Intent Object — Действие, чтобы сделать телефонный звонок

Вы будете использовать действие ACTION_CALL для запуска встроенной функции телефонного звонка, доступной на устройстве Android. Ниже приведен простой синтаксис для создания намерения с действием ACTION_CALL

Intent phoneIntent = new Intent(Intent.ACTION_CALL);

Вы можете использовать действие ACTION_DIAL вместо ACTION_CALL, в этом случае у вас будет возможность изменить кодированный телефонный номер перед совершением вызова вместо прямого вызова.

Намеренный объект — данные / тип, чтобы сделать телефонный звонок

Чтобы позвонить по указанному номеру 91-000-000-0000, необходимо указать tel: в качестве URI с помощью метода setData () следующим образом:

phoneIntent.setData(Uri.parse("tel:91-000-000-0000"));

Интересным моментом является то, что для совершения телефонного звонка не нужно указывать какие-либо дополнительные данные или тип данных.

пример

В следующем примере показано, как на практике использовать Android Intent для звонка на указанный номер мобильного телефона.

Чтобы поэкспериментировать с этим примером, вам понадобится настоящее мобильное устройство с новейшей ОС Android, в противном случае вам придется бороться с эмулятором, который может не работать.

шаг Описание
1 Вы будете использовать IDE Android Studio для создания приложения Android и назовите его « Мое приложение» в пакете com.example.saira_000.myapplication .
2 Измените файл src / MainActivity.java и добавьте необходимый код для выполнения вызова.
3 Измените XML-файл макета. Res / layout / activity_main.xml добавьте любой компонент GUI, если это необходимо. Я добавляю простую кнопку для вызова номера 91-000-000-0000
4 Нет необходимости определять строковые константы по умолчанию. Android-студия заботится о константах по умолчанию.
5 Измените AndroidManifest.xml, как показано ниже
6 Запустите приложение, чтобы запустить эмулятор Android, и проверьте результат изменений, внесенных в приложение.

Ниже приводится содержимое измененного основного файла активности src / MainActivity.java .

package com.example.saira_000.myapplication;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
   private Button button;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      button = (Button) findViewById(R.id.buttonCall);
		
      button.setOnClickListener(new View.OnClickListener() {
         public void onClick(View arg0) {
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:0377778888"));
				
            if (ActivityCompat.checkSelfPermission(MainActivity.this,
               Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
                  return;
               }
               startActivity(callIntent);
         }
      });

   }
}

Ниже будет содержание файла res / layout / activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

   <Button
      android:id="@+id/buttonCall"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="call 0377778888" />

</LinearLayout>

Ниже будет содержимое файла res / values ​​/ strings.xml для определения двух новых констант:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Application</string>
</resources>

Ниже приводится содержимое по умолчанию для AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.saira_000.myapplication" >
   
   <uses-permission android:name="android.permission.CALL_PHONE" />
   
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.saira_000.myapplication.MainActivity"
         android:label="@string/app_name" >
      
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      
      </activity>
      
   </application>
</manifest>

Давайте попробуем запустить ваше приложение My Application . Я предполагаю, что вы подключили свое фактическое мобильное устройство Android к компьютеру. Чтобы запустить приложение из студии Android, откройте один из файлов деятельности вашего проекта и нажмите «Выполнить». Eclipse Run Icon значок на панели инструментов. Выберите мобильное устройство в качестве опции, а затем проверьте свое мобильное устройство, которое отобразит следующий экран —

Android Mobile Call Screen

Теперь используйте кнопку Call , чтобы сделать телефонный звонок, как показано ниже —