Telefonanruffunktion in Android mit Java

Jan 19 2023
Implementierung der In-App-Telefonanruffunktion mit Java in Android. Der Anrufdienst ist eine der Kernfunktionen von Android und wird in Android-Anwendungen sehr häufig verwendet.

Implementierung der In-App-Telefonanruffunktion mit Java in Android.

Der Anrufdienst ist eine der Kernfunktionen von Android und wird in Android-Anwendungen sehr häufig verwendet. Mit dieser Funktion kann der Benutzer Anrufe aus der Android-Anwendung heraus tätigen. Es gibt zwei Möglichkeiten, jemanden über eine Android-Anwendung anzurufen. Eine Nummer, bei der die zu wählende Nummer vordefiniert ist und keine Benutzereingabe erfordert. Zum Beispiel das Stellen einer Anfrage oder Unterstützung bei der Kundenbetreuung. Der zweite Ansatz besteht darin, eine beliebige gültige Nummer Ihrer Wahl anzurufen. Bei diesem Ansatz soll der Benutzer eine Nummer eingeben, die gewählt werden soll. In Java können beide durch das eingebaute Paket selbst implementiert werden.

Wir müssen Berechtigungen erteilen, damit die Anwendung die integrierte Android-Anruffunktion verwenden kann. Dazu bitten wir den Benutzer zunächst um die CALL_PHONE-Berechtigung, indem wir den folgenden Berechtigungscode in die Datei AndroidManifest.xml einfügen .

<uses-permission android:name="android.permission.CALL_PHONE"/>

Darin haben wir zwei Schaltflächen hinzugefügt und beiden Schaltflächen eine ID zugewiesen. Eine zum Anrufen einer vordefinierten Nummer und die andere zum Anrufen über Benutzereingaben.

<?xml version="1.0" encoding="utf-8"?>
<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:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="24dp"
        android:textStyle="bold"
        android:text="@string/call_feature" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_marginTop="20dp"
        android:text="@string/feature" />

    <Button
        android:id="@+id/btnCall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:text="@string/contact_us"/>

    <EditText
        android:id="@+id/edtPhoneNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16dp"
        android:layout_marginTop="20dp"
        android:hint="@string/dynamicCall"
        android:text="" />

    <Button
        android:id="@+id/btnCallDynamic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10dp"
        android:text="@string/call"/>
</LinearLayout>

Wir werden einen Android-Intent zum Anrufen verwenden. Ein Android-Intent umfasst den Code, den Sie zum Ausführen einer Aktion benötigen, und beschreibt die Daten in einem Intent-Objekt, das Sie vom System benötigen. Mit einem Intent können Sie eine Aktivität in einer anderen App starten, indem Sie eine einfache Aktion beschreiben, die Sie in einem Intent-Objekt ausführen möchten.

Hier erstellen wir einen Intent und beschreiben die Aktion ACTION_CALL im Intent-Objekt.

Intent callIntent = new Intent(Intent.ACTION_CALL);

callIntent.setData(Uri.parse("tel: 9999999999"));

ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);

startActivity(callIntent);

package com.example.androidphonecalls;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

import android.Manifest;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

// Initialized edittext and buttons
    Button call, dynamicCall;
    EditText phoneNumber;
    private static final int REQUEST_PHONE_CALL = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// Getting instance of button and edit text
        call = findViewById(R.id.btnCall);
        phoneNumber = findViewById(R.id.edtPhoneNumber);
        dynamicCall = findViewById(R.id.btnCallDynamic);

// Here we are adding onClick listener on the button to call predefined number
        call.setOnClickListener(view -> {
            Intent callIntent = new Intent(Intent.ACTION_CALL);
// Here we have defined the number to be called
            callIntent.setData(Uri.parse("tel: 9999999999"));
// Checking for the permission
            ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);
// Starting the call Intent
            startActivity(callIntent);
        });

// Here we are adding onClick listener on the button to call via user input
        dynamicCall.setOnClickListener(view -> {
// Take value from user input
            String retrieveNumber = phoneNumber.getText().toString();
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:" + retrieveNumber));
// Checking  for permissions
            ActivityCompat.requestPermissions(MainActivity.this, 
            new String[]{Manifest.permission.CALL_PHONE}, REQUEST_PHONE_CALL);
// Starting the call Intent
            startActivity(callIntent);
        });
    }
}

Danke !