来电信息的拦截以及判断_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 来电信息的拦截以及判断

来电信息的拦截以及判断

 2014/10/6 18:19:14  xuan轩  程序员俱乐部  我要评论(0)
  • 摘要:如何拦截来电,并检测到某些特定号码时自动挂断电话?使用反射的技术访问androidSDK的内部功能来挂断电话1.拦截来电的广播接收器类(InCallReceiver)的onReceive()方法1publicvoidonReceive(finalContextcontext,Intentintent){2//得到电话管理服务,以便获得电话状态3TelephonyManagertm=(TelephonyManager)context.getSystemService(Service
  • 标签:

如何拦截来电,并检测到某些特定号码时自动挂断电话?
使用反射的技术访问android SDK的内部功能来挂断电话
1.拦截来电的广播接收器类(InCallReceiver)的onReceive()方法

 

 1 public void onReceive(final Context context,Intent intent){
 2  //得到电话管理服务,以便获得电话状态
 3  TelephonyManager tm=(TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);
 4  //根据不同的来电状态进行处理
 5  switch(tm.getCallState()){
 6      //响铃
 7   case TelephonyManager.CALL_STATE_RINGING:
 8      //获得来电的电话号码
 9   String incomingNumber=intent.getStringExtra("incoming_number");
10    //假如来电号码时12345678.则挂断电话
11    if("12345678".equals(incomingNumber)){
12    Calss<TelephonyManager> telephonyManagerClass=TelephonyManager.class;
13    //通过Java反射技术获得getITelephony方法对应的Method对象
14  Method telephonyMethod=telephonyManagerClass.getDelaredMethod("getITelephony",(Class[]) null);
15    //允许访问getITelephony方法
16    telephonyMethod.setAccessible(true);
17    //调用getITelephony方法获取ITelephony对象
18    Object obj=telephonyMethod.invoke(telephonyManager.(Object[]) null);
19    //获取endCall方法对应Method对象
20    Method endCallMethod=obj.getClass().getMethod("endCall",null);
21   //允许访问endCall方法
22   endCallMethod.setAccessible(true);
23   //调用endCall方法挂断电话
24    endCallMethod.invoke(obj,null);
25 
26    }
27    break;
28    case TelephonyManager.CALL_STATE_OFFHOOK://接听电话
29   Log.d("call_state","offhook");
30   break;
31   case TelephonyManager.CALL_STATE_IDLE://挂断电话
32   closeToast();
33   break;
34  }
35  }

2.最后需要在清单文件中定义广播接收器,并添加可接收来电广播的权限
配置inCallReceiver

1 <receiver android:name=".InCassReceiver"
2 android:enable="treu">
3  <intent-=filter>
4  <action android:name="android.intent.action.PHONE_STATE"/>
5  <intent-filter>
6  </recevier>

 

上一篇: Android通过achartengine画折线图 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名