首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

回电监听

2012-06-26 
来电监听receiver android:name.filter.PhoneStatReceiverintent-filteraction android:nameand

来电监听
    <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>


    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;
                            }
                    }
            }
    }

热点排行