电话监听

来源:互联网 发布:钱宝软件下载 编辑:程序博客网 时间:2024/04/30 08:33

一、来电监听

1、成员变量:

private PhoneStateListener listener;private TelephonyManager tm;

2、注册电话状态监听代码:

// 注册电话监听// 通过电话管理类TelephoneManagertm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);// 监听电话的状态listener = new PhoneStateListener() {    /*     * (non-Javadoc) 该方法用来监听电话的状态     *      * @see android.telephony.PhoneStateListener#onCallStateChanged(int,     * java.lang.String)     */    @Override    public void onCallStateChanged(int state, final String incomingNumber) {        // TODO Auto-generated method stub        // state 电话的状态 incomingNumber 打进来的号码        switch (state) {        case TelephonyManager.CALL_STATE_IDLE:// 挂断的状态,空闲的状态            System.out.println("CALL_STATE_IDLE");            break;        case TelephonyManager.CALL_STATE_RINGING://响铃状态            System.out.println("CALL_STATE_RINGING");            break;        case TelephonyManager.CALL_STATE_OFFHOOK:// 通话的状态            System.out.println("CALL_STATE_OFFHOOK");            break;        default:            break;        }        super.onCallStateChanged(state, incomingNumber);    }}// 注册电话的监听tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);

3、取消电话状态监听代码:

@Overridepublic void onDestroy() {    // 取消电话状态监听    tm.listen(listener, PhoneStateListener.LISTEN_NONE);}

二、外拨监听

TelephonyManager只能监听”来电响铃”、”空闲”、及”接通电话”状态,不能监听外拨状态,需要使用广播接收者才能监听外拨。
注意:TelephonyManager不管是来电还是外拨,”接通电话”状态都会被回调。

1、外拨电话的广播的实现

/** * @author Administrator * 外拨电话的广播 */private class OutCallReceiver extends BroadcastReceiver{    @Override    public void onReceive(Context context, Intent intent) {        isOutCall = true;//记录是外拨电话        //获取外拨的电话号码        String phoneNumber = getResultData();        showLocationToast(phoneNumber);//显示外拨电话的土司    }}

2、注册外拨广播接收者

private OutCallReceiver outCallReceiver;@Overridepublic void onCreate() {    //监控外拨 注册广播    outCallReceiver = new OutCallReceiver();    IntentFilter filter = new IntentFilter("android.intent.action.NEW_OUTGOING_CALL");    //注册外拨电话广播    registerReceiver(outCallReceiver, filter);}

3、取消外拨广播接收者

@Overridepublic void onDestroy() {    //监控外拨 取消注册广播    unregisterReceiver(outCallReceiver);    super.onDestroy();}

4、清单文件中添加权限

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
0 0
原创粉丝点击