So telefonieren Sie in Android

So tätigen Sie einen Anruf in Android

In diesem Tutorial zeigen wir Ihnen, wie Sie in Android einen Anruf tätigen und den Anrufstatus überPhoneStateListener überwachen.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1 Android-Layoutdateien

Einfache Layoutdatei, um eine Schaltfläche anzuzeigen.

Datei: res / layout / main.xml



    

2. Aktivität

Verwenden Sie den folgenden Codeausschnitt, um in Android einen Anruf zu tätigen.

    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:0377778888"));
    startActivity(callIntent);

File : MainActivity.java - Wenn die Taste angerufen wird, rufen Sie 0377778888 an.

package com.example.android;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    private Button button;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button = (Button) findViewById(R.id.buttonCall);

        // add button listener
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:0377778888"));
                startActivity(callIntent);

            }

        });

    }

}

3 Android-Manifest

Um einen Anruf zu tätigen, benötigt Android die Erlaubnis vonCALL_PHONE.

Datei: AndroidManifest.xml



    

    

    

        
            
                
                
            
        
    

4. PhoneStateListener Beispiel

Ok, jetzt aktualisieren wir die obige Aktivität, um den Status des Telefonanrufs zu überwachen. Wenn ein Telefonanruf beendet wird, kehren Sie zur ursprünglichen Aktivität zurück (tatsächlich wird nur die Aktivität neu gestartet). Lesen Sie den Kommentar, er sollte selbsterklärend sein.

Note
Führen Sie es aus und lesen Sie die Logcat-Konsole, um zu verstehen, wiePhoneStateListener funktioniert.

Datei: MainActivity.java

package com.example.android;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    final Context context = this;
    private Button button;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        button = (Button) findViewById(R.id.buttonCall);

        // add PhoneStateListener
        PhoneCallListener phoneListener = new PhoneCallListener();
        TelephonyManager telephonyManager = (TelephonyManager) this
            .getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE);

        // add button listener
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:0377778888"));
                startActivity(callIntent);

            }

        });

    }

    //monitor phone call activities
    private class PhoneCallListener extends PhoneStateListener {

        private boolean isPhoneCalling = false;

        String LOG_TAG = "LOGGING 123";

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            if (TelephonyManager.CALL_STATE_RINGING == state) {
                // phone ringing
                Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
            }

            if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
                // active
                Log.i(LOG_TAG, "OFFHOOK");

                isPhoneCalling = true;
            }

            if (TelephonyManager.CALL_STATE_IDLE == state) {
                // run when class initial and phone call ended,
                // need detect flag from CALL_STATE_OFFHOOK
                Log.i(LOG_TAG, "IDLE");

                if (isPhoneCalling) {

                    Log.i(LOG_TAG, "restart app");

                    // restart app
                    Intent i = getBaseContext().getPackageManager()
                        .getLaunchIntentForPackage(
                            getBaseContext().getPackageName());
                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);

                    isPhoneCalling = false;
                }

            }
        }
    }

}

Aktualisieren Sie die Android Manifest-Datei erneut.PhoneStateListenerbenötigtREAD_PHONE_STATE.

Datei: AndroidManifest.xml



    

    
    

    

        
            
                
                
            
        
    

5. Demo

Aktivität gestartet, nur eine Schaltfläche anzeigen.

android phone call example

Wenn Sie auf die Schaltfläche klicken, rufen Sie 0377778888 an.

android phone call example

Wenn das Telefonat unterbrochen oder beendet wird, starten Sie die Hauptaktivität neu.

android phone call example

Quellcode herunterladen

Laden Sie es herunter -Android-Make-Phone-Call-Example.zip (16 KB)