Android监听来电和去电

2019-04-14 21:41发布


android中监听来电和去电,这种功能的实现也许会在一些项目中经常实现,尤其一些防盗软件,这里为大家分享一下很不错的Android监听来电和去电的源码: 要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class PhoneStateBroadCastReceiver extends BroadcastReceiver {  private static final String TAG = "PhoneStateBroadCastReceiver";  private static boolean mIncomingFlag = false;  private static String mIncomingNumber = null;  @Override  public void onReceive(Context context, Intent intent)  {   // 如果是拨打电话   if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))   {    mIncomingFlag = false;    String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);    Log.i(TAG, "call OUT:" + phoneNumber);   } else   {    // 如果是来电    TelephonyManager tManager = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);    switch (tManager.getCallState())    {    case TelephonyManager.CALL_STATE_RINGING:     mIncomingNumber = intent.getStringExtra("incoming_number");     Log.i(TAG, "RINGING :" + mIncomingNumber);     break;    case TelephonyManager.CALL_STATE_OFFHOOK:     if (mIncomingFlag)     {      Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);     }     break;    case TelephonyManager.CALL_STATE_IDLE:     if (mIncomingFlag)     {      Log.i(TAG, "incoming IDLE");     }     break;    }   }  } }
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限: