android-监听来电和去电

2019-04-14 22:06发布

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver public class PhoneStatReceiver extends BroadcastReceiver{                 private static final String TAG = "PhoneStatReceiver";         //        private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();                 private static boolean incomingFlag = false;                 private static String incoming_number = null;           @Override         public void onReceive(Context context, Intent intent) {                 //如果是拨打电话                 if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){                                                incomingFlag = false;                         String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);                                Log.i(TAG, "call OUT:"+phoneNumber);                                        }else{                                                //如果是来电                         TelephonyManager tm =                             (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);                                                                        switch (tm.getCallState()) {                         case TelephonyManager.CALL_STATE_RINGING:                                 incomingFlag = true;//标识当前是来电                                 incoming_number = intent.getStringExtra("incoming_number");                                 Log.i(TAG, "RINGING :"+ incoming_number);                                 break;                         case TelephonyManager.CALL_STATE_OFFHOOK:                                                                if(incomingFlag){                                         Log.i(TAG, "incoming ACCEPT :"+ incoming_number);                                 }                                 break;                                                 case TelephonyManager.CALL_STATE_IDLE:                                                                if(incomingFlag){                                         Log.i(TAG, "incoming IDLE");                                                                }                                 break;                         }                 }         } } 第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。