您的位置:首页 > 移动开发 > Android开发

android-轻松监听来电和去电

2012-08-23 10:47 162 查看

android-轻松监听来电和去电

要监听android打电话和接电话,只需下面2步骤

1.第一步,写一个Receiver继承自BroadcastReceiver

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息