监听电话状态

                            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 状态栏透明
  2. Android权限问题整理
  3. Android权限列表permission说明 [轉載]
  4. android phone电话拨出上层java流程
  5. Android P签名机制和系统权限
  6. 获取android顶部状态栏高度的两种方式

随机推荐

  1. [置顶] Android(安卓)开发资源
  2. [Android(安卓)Develop_003]-Android(安
  3. Android(安卓)UI布局之区分 android:grav
  4. 《Android移动应用基础教程》(Android(安
  5. Android(安卓)RelativeLayout 属性大全
  6. Android(安卓)RelativeLayout属性
  7. 自定义背景文件,android:shape的使用!
  8. android:versionCode和android:versionNa
  9. Android(安卓)使用shape来优化界面效果
  10. Android(安卓)开发之 ---- 底层驱动开发(