Как сделать телефонный звонок из приложения Android?
В этой статье вы создадите базовое приложение для Android , которое можно использовать для вызова некоторых номеров через ваше приложение для Android. Вы можете сделать это с помощью Intent с действием ACTION_CALL . По сути, намерение — это простой объект сообщения, который используется для связи между компонентами Android, такими как действия, поставщики контента, приемники вещания и службы, которые здесь используются для телефонных звонков. Это приложение в основном содержит одно действие с текстом редактирования для записи номера телефона, на который вы хотите позвонить, и кнопку для вызова этого номера.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Код для этого был предоставлен как на Java, так и на языке программирования Kotlin для Android.
Шаг 2. Добавьте разрешение в файл AndroidManifest.xml
Вам нужно получить разрешение от пользователя на телефонный звонок, и для этого разрешения CALL_PHONE добавляется в файл манифеста. Вот код файла манифеста:
<!-- Permission for phone call --> <uses-permission android:name="android.permission.CALL_PHONE" />
Шаг 3: Работа с файлами XML
Далее перейдите к файлу activity_main.xml , представляющему UI проекта. Ниже приведен код файла activity_main.xml . Комментарии добавляются внутри кода, чтобы понять код более подробно. Этот файл содержит относительный макет, который содержит EditText для записи номера телефона, на который вы хотите сделать телефонный звонок, и кнопку для начала намерения или совершения звонков:
XML
<? xml version = "1.0" encoding = "utf-8" ?> <!--Relative Layout--> android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > <!-- Edit text for phone number --> < EditText android:id = "@+id/editText" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentTop = "true" android:layout_centerHorizontal = "true" android:layout_marginTop = "30dp" /> <!-- Button to make call --> < Button android:id = "@+id/button" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_alignParentTop = "true" android:layout_centerHorizontal = "true" android:layout_marginTop = "115dp" android:padding = "5dp" android:text = "Make Call!!" /> </ RelativeLayout > |
Шаг 4: Работа с файлом MainActivity
Перейдите в файл MainActivity и обратитесь к следующему коду. Ниже приведен код файла MainActivity. Комментарии добавляются внутри кода, чтобы понять код более подробно. В намерении MainActivity объект создается для перенаправления активности диспетчеру вызовов, а атрибут действия намерения устанавливается как ACTION_CALL. Номер телефона, введенный пользователем, анализируется через Uri и передается как данные в объект Intent, который затем используется для вызова этого номера телефона. setOnClickListener прикрепляется к кнопке с объектом намерения в нем, чтобы сделать намерение с действием как ACTION_CALL, чтобы сделать телефонный звонок. Вот полный код:
Java
import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // define objects for edit text and button EditText edittext; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting instance of edittext and button button = findViewById(R.id.button); edittext = findViewById(R.id.editText); // Attach set on click listener to the button for initiating intent button.setOnClickListener(arg -> { // getting phone number from edit text and changing it to String String phone_number = edittext.getText().toString(); // Getting instance of Intent with action as ACTION_CALL Intent phone_intent = new Intent(Intent.ACTION_CALL); // Set data of Intent through Uri by parsing phone number phone_intent.setData(Uri.parse( "tel:" + phone_number)); // start Intent startActivity(phone_intent); }); } } |
Kotlin
import android.content.Intent import android.net.Uri import android.os.Bundle import android.view.View import android.widget.Button import android.widget.EditText import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { // define objects for edit text and button private lateinit var edittext: EditText private lateinit var button: Button override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Getting instance of edittext and button button = findViewById(R.id.button) edittext = findViewById(R.id.editText) // Attach set on click listener to the button for initiating intent button.setOnClickListener(View.OnClickListener { // getting phone number from edit text and changing it to String val phone_number = edittext.text.toString() // Getting instance of Intent with action as ACTION_CALL val phone_intent = Intent(Intent.ACTION_CALL) // Set data of Intent through Uri by parsing phone number phone_intent.data = Uri.parse( "tel:$phone_number" ) // start Intent startActivity(phone_intent) }) } } |