android-轻松监听来电和去电

要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
  1. public class PhoneStatReceiver extends BroadcastReceiver{
  2.        
  3.         private static final String TAG = "PhoneStatReceiver";
  4.        
  5. //        private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();
  6.        
  7.         private static boolean incomingFlag = false;
  8.        
  9.         private static String incoming_number = null;

  10.         @Override
  11.         public void onReceive(Context context, Intent intent) {
  12.                 //如果是拨打电话
  13.                 if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){                       
  14.                         incomingFlag = false;
  15.                         String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);       
  16.                         Log.i(TAG, "call OUT:"+phoneNumber);                       
  17.                 }
  18.               else{                       
  19.                         //如果是来电
                              String phoneNumber = intent.getStringExtra(   

    TelephonyManager.EXTRA_INCOMING_NUMBER);   

           TelephonyManager telephony =    

    (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);   

            int state = telephony.getCallState();   

            switch(state){   

            case TelephonyManager.CALL_STATE_RINGING:   

                Log.i(TAG, "[Broadcast]等待接电话="+phoneNumber);   

                break;   

            case TelephonyManager.CALL_STATE_IDLE:   

                Log.i(TAG, "[Broadcast]电话挂断="+phoneNumber);   

                break;   

            case TelephonyManager.CALL_STATE_OFFHOOK:   

                Log.i(TAG, "[Broadcast]通话中="+phoneNumber);   

                break;   

  20.                          }
  21.                 }
  22.         }
  23. }
复制代码
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
  1. <receiver android:name=".filter.PhoneStatReceiver">  
  2.             <intent-filter>
  3.                  <action android:name="android.intent.action.PHONE_STATE"/>           
  4.                  <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
  5.             </intent-filter>
  6. </receiver>

  7. <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
  8.         <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值