android做到监听来电,和监听去电

来源:互联网 发布:深圳华强北现状知乎 编辑:程序博客网 时间:2024/05/29 06:45

1 监听来电不用注册广播接收者,只需自定义一个监听类继承PhoneStateListener

代码如下

首先要添加权限


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

        private TelephonyManager tm;
    private MyListener listener;

              tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
listener = new MyListener();
tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);// 监听来电的状态

class    MyListener extends PhoneStateListener {

//继承PhoneStateListener可以做到监听来电,要做到监听打电话,则需重新定义一个广播接受者
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {

                                 /*int state,电话的状态

                                    String incomingNumber来电号码

                                    */

         case TelephonyManager.CALL_STATE_RINGING:// 电话正在打电话

                                /*下面逻辑是我显示来电号码在桌面上,自定义了一个桌面吐司*/
String address = AddresDao.getAddress(incomingNumber);// 
showToast(address);
break;
case TelephonyManager.CALL_STATE_IDLE:// // 电话闲置状态
if (mWM != null && view != null) {
mWM.removeView(view);//// 从window中移除view
view = null;
}
break;
default:
break;
}
super.onCallStateChanged(state, incomingNumber);
}
}

2 监听去电则需要注册一个广播

配置文件中   
<receiver android:name=".receiver.OutCallReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
        </receiver>

 需要监听具体意图和权限;

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>


  
java代码中
               private OutCallReceiver receiver;
                   receiver = new OutCallReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_NEW_OUTGOING_CALL);
registerReceiver(receiver, filter);// 动态注册广播

/*定义一个广播接收者*/
class OutCallReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
String number = getResultData();// 获取去电电话号码
String address = AddresDao.getAddress(number);
// Toast.makeText(context, address, Toast.LENGTH_LONG).show();
          showToast(address);
}
}



0 0
原创粉丝点击