来去电归属地[02]拦截外拨电话与来电的号码
2014-06-22 23:09
246 查看
摘要
从以上思路图可以看出来去电显示的关键要点之一为拦截来去电时电话号码,有了这个号码我们才方便开展其他的功能代码,所以获取这个号码的知识点也就成为此时关注的焦点了。那么我们怎么获取外拨时的电话号码呢?Android系统里面是通过一个OutCall的广播通知其他程序,”有人向外拨电话了!!!号码是131....”,而对于来电的话,则是通过一个系统级的服务TelephonyManager来管理跟通讯有关的活动与参数,是不是很像候老师,有什么就业的难题都找他?TelephonyManager就是这样的,比方说想获取sim卡序列号,电话的通话状态(”有电话了打进来了!!!号码是131....”,)等等,都找这个Android版的候老师!!!既然是这样的,那么这个广播与管理者就是我们掌握的要点了。
>代码注册广播
.外拨 [拦截一个Action为Intent.ACTION_NEW_OUTGOING_CALL的外拨广播 ]
注意
代码注册的广播在不用的时候要进行移除
>号码获取
常见的注册监听器的方式为manager.setON...Listener(); register...Listener 等 但是TelephonyManager这个监听真的不是很经典,或者说很变态!!!
注意
用完成不需要这个状态的话要进行移除操作
>事件处理
注意
CALL_STATE_OFFHOOK不是挂断电话而是接通电话,正在通话中学员们老是搞反了,谁叫名字取得这么让人误解!!!
从以上思路图可以看出来去电显示的关键要点之一为拦截来去电时电话号码,有了这个号码我们才方便开展其他的功能代码,所以获取这个号码的知识点也就成为此时关注的焦点了。那么我们怎么获取外拨时的电话号码呢?Android系统里面是通过一个OutCall的广播通知其他程序,”有人向外拨电话了!!!号码是131....”,而对于来电的话,则是通过一个系统级的服务TelephonyManager来管理跟通讯有关的活动与参数,是不是很像候老师,有什么就业的难题都找他?TelephonyManager就是这样的,比方说想获取sim卡序列号,电话的通话状态(”有电话了打进来了!!!号码是131....”,)等等,都找这个Android版的候老师!!!既然是这样的,那么这个广播与管理者就是我们掌握的要点了。
1.采用代码注册拦截OutGoingCall广播
>权限<!-- 外拨电话的广播拦截权限 --> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
>代码注册广播
.外拨 [拦截一个Action为Intent.ACTION_NEW_OUTGOING_CALL的外拨广播 ]
// 创建过滤器 IntentFilter filter = new IntentFilter(); // 广播类型 filter.addAction(Intent.ACTION_NEW_OUTGOING_CALL); filter.setPriority(1000); // 注册广播 registerReceiver(outCallReceiver, filter);
注意
代码注册的广播在不用的时候要进行移除
// 3.回调:条件 stopService 仅有一次 @Override public void onDestroy() { super.onDestroy(); System.out.println("--归属地服务----onDestroy---销毁"); // 移除注册 unregisterReceiver(outCallReceiver); }
>号码获取
// 拦截外拨的接收者 private BroadcastReceiver outCallReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 获取号码头 String number = super.getResultData(); System.out.println("---outCallReciever-onReceive number=" + number); } };
2.拦截来电
>注册监听常见的注册监听器的方式为manager.setON...Listener(); register...Listener 等 但是TelephonyManager这个监听真的不是很经典,或者说很变态!!!
// ##############TelephonyManager 通讯相关的服务 sim/通话状态 监听器拦截的 manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); // 监听通话状态 manager.listen(mPhoneStateListener, // 通话状态监听器 PhoneStateListener.LISTEN_CALL_STATE// 设置监听类型 );
注意
用完成不需要这个状态的话要进行移除操作
// 移除话状态监听 manager.listen(mPhoneStateListener, // 通话状态监听器 PhoneStateListener.LISTEN_NONE// 设置监听类型 );
>事件处理
private PhoneStateListener mPhoneStateListener = new PhoneStateListener() { // 监听状态改变 @Override public void onCallStateChanged(// int state,// 状态 String incomingNumber// 来电号码 ) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_IDLE:// 没有电话 dismissDialog(); break; case TelephonyManager.CALL_STATE_RINGING:// 响铃 dealNumber(incomingNumber); break; case TelephonyManager.CALL_STATE_OFFHOOK:// 接听 break; } } };
注意
CALL_STATE_OFFHOOK不是挂断电话而是接通电话,正在通话中学员们老是搞反了,谁叫名字取得这么让人误解!!!
相关文章推荐
- FAQ02963]如何拦截来电,即在电话ring之前就有机会检查来电号码?
- FAQ02963]如何拦截来电,即在电话ring之前就有机会检查来电号码?
- FAQ02963]如何拦截来电,即在电话ring之前就有机会检查来电号码?
- 如何拦截来电,并检测到某些特定号码时自动挂断电话
- 如何拦截来电,检测到某个号码自动挂断
- Android6.0来电号码与电话薄联系人进行匹配
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- 举例说明在android中用PhoneStateListener监听手机电话状态与用发送邮件来通知来电电话的号码
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- 让你的网页自动显示电话来电号码并录音---免费下载来电显示ActiveX控件(OCX)
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- Android6.0来电号码电话薄名称匹配
- Android中通过来电转移实现“电话已关机”,“此号码已停机”等
- JS电话、手机号码验证
- android AIDL机制 电话拦截
- Android来电拦截及拦截后的提示音
- Android 来电拦截的开发实现