Comment passer un appel téléphonique sur Android
Dans ce didacticiel, nous vous montrons comment passer un appel téléphonique sous Android et surveiller les états des appels téléphoniques viaPhoneStateListener.
P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.
1 Fichiers de mise en page Android
Fichier de mise en page Simpel, pour afficher un bouton.
Fichier: res / layout / main.xml
2. Activité
Utilisez l'extrait de code ci-dessous pour passer un appel téléphonique sur Android.
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:0377778888"));
startActivity(callIntent);
File : MainActivity.java - Lorsque le bouton est appelé, appelez le 0377778888.
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 Manifeste Android
Pour passer un appel téléphonique, Android a besoin de l'autorisation deCALL_PHONE.
Fichier: AndroidManifest.xml
4. Exemple PhoneStateListener
Ok, maintenant nous mettons à jour l'activité ci-dessus, pour surveiller les états des appels téléphoniques, lorsqu'un appel téléphonique est terminé, revenez à l'activité d'origine (en fait, il suffit de redémarrer l'activité). Lisez le commentaire, il devrait être explicite.
Note
Exécutez-le et reportez-vous à la console logcat pour comprendre le fonctionnement dePhoneStateListener.
Fichier: 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;
}
}
}
}
}
Mettez à nouveau à jour le fichier manifeste Android,PhoneStateListener a besoin de l'autorisation deREAD_PHONE_STATE.
Fichier: AndroidManifest.xml
5. Demo
L'activité a commencé, affichez simplement un bouton.

Lorsque vous cliquez sur le bouton, appelez le 0377778888.

Lorsque l'appel téléphonique est suspendu ou terminé, redémarrez l'activité principale.

Télécharger le code source
Téléchargez-le -Android-Make-Phone-Call-Example.zip (16 Ko)