1、编写MainActivity.java类
package com.example.callstatuslintener;import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//开启服务Intent intent=new Intent(this, PhoneStatusService.class);startService(intent);}}
2、编写PhoneStatusService.java类
/*** */
package com.example.callstatuslintener;import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;/*** 长期后台运行的组件,如果用户不手动关闭,不会停止的** 2013-12-6*/
public class PhoneStatusService extends Service {/* (non-Javadoc)* @see android.app.Service#onBind(android.content.Intent)*/@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();System.out.println("服务被创建了");//监视用户电话状态的变化//电话管理器 电话管理服务TelephonyManager tm=(TelephonyManager) getSystemService(TELEPHONY_SERVICE);//监听手机的通话状态的变化tm.listen(new MyPhoneStatusLinstener(), PhoneStateListener.LISTEN_CALL_STATE);}private class MyPhoneStatusLinstener extends PhoneStateListener{@Overridepublic void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager.CALL_STATE_IDLE: //空闲状态,没有通话没有响铃break;case TelephonyManager.CALL_STATE_RINGING: //响铃状态System.out.println("发现来电号码:"+incomingNumber);if ("5566".equals(incomingNumber)) {System.out.println("挂断电话");}break;case TelephonyManager.CALL_STATE_OFFHOOK: //通话状态break;}super.onCallStateChanged(state, incomingNumber);}}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();System.out.println("服务被销毁了……");}}
3、注册服务AndroidManifest.xml
demo下载