监听电话状态

                            class        MyPhoneStateListener        extends        PhoneStateListener { @Override        public               void        onCallStateChanged(       int        state, String incomingNumber) {        switch       (state) {        case        TelephonyManager.CALL_STATE_IDLE:        //       空闲                       break       ;        case        TelephonyManager.CALL_STATE_RINGING:        //       来电                       break       ;        case        TelephonyManager.CALL_STATE_OFFHOOK:        //       摘机(正在通话中)                       break       ; } } }        //       获取电话通讯服务                TelephonyManager tpm        =        (TelephonyManager)        this        .getSystemService(Context.TELEPHONY_SERVICE);        //       创建一个监听对象,监听电话状态改变事件                tpm.listen(       new        MyPhoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);                

 

权限:

                    <       uses-permission        android:name       ="android.permission.READ_PHONE_STATE"       >       uses-permission       >                        

 以下文章转载自:http://www.eoeandroid.com/thread-8994-1-1.html

 要监听android打电话和接电话,只需下面2步骤
第一步,写一个Receiver继承自BroadcastReceiver

来电action为TelephonyManager.ACTION_PHONE_STATE_CHANGED

去电action为Intent.ACTION_NEW_OUTGOING_CALL

                    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,
另外注意加上相应的权限。

 

 

                    <       receiver        android:name       =".filter.PhoneStatReceiver"       >               <       intent-filter       >               <       action        android:name       ="android.intent.action.PHONE_STATE"       />               <       action        android:name       ="android.intent.action.NEW_OUTGOING_CALL"               />                      intent-filter       >                      receiver       >               <       uses-permission        android:name       ="android.permission.READ_PHONE_STATE"       >       uses-permission       >               <       uses-permission        android:name       ="android.permission.PROCESS_OUTGOING_CALLS"       >       uses-permission       >        

更多相关文章

  1. Android(安卓)获取地理位置的经度和纬度(zz)
  2. Android(安卓)电话的反射调用机制实现静默接听电话
  3. android phone电话拨出上层java流程
  4. android仿知乎标题栏随ScrollView滚动变色
  5. [置顶] Android(安卓)ViewPager+Fragment超高仿微信主界面(带底部
  6. ReactNative 在用react-navigation组件时,没有 navigator.getCurr
  7. Android中打电话的数据流程
  8. android广播监听短信并显示内容
  9. 清单文件,测试,打电话和发短信应用

随机推荐

  1. Google Android操作系统内核编译图文教程
  2. 国内最全的Android市场,最全Android软件商
  3. Android(安卓)蓝牙调色灯/zigbee调色灯学
  4. Android(安卓)onTouchEvent, onClick及on
  5. Android简单语音控制应用的实现
  6. Android中_TextView属性的XML详解 包括单
  7. Linux ubuntu repo安装方法
  8. Android多点触控技术
  9. Android(安卓)-- Layout布局文件里的andr
  10. 移动开发参考书之Android篇