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.PhoneStateListener
benötigtREAD_PHONE_STATE.
Datei: AndroidManifest.xml
5. Demo
Aktivität gestartet, nur eine Schaltfläche anzeigen.
Wenn Sie auf die Schaltfläche klicken, rufen Sie 0377778888 an.
Wenn das Telefonat unterbrochen oder beendet wird, starten Sie die Hauptaktivität neu.
Quellcode herunterladen
Laden Sie es herunter -Android-Make-Phone-Call-Example.zip (16 KB)