来电信息的拦截以及判断

如何拦截来电,并检测到某些特定号码时自动挂断电话?
使用反射的技术访问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>
时间: 2024-08-17 06:45:13

来电信息的拦截以及判断的相关文章

java端拦截器判断客户的的请求是否是ajax请求

1 java端拦截器判断客户的的请求是否是ajax请求 2 3 4 发表于 2014-08-22 23:38:08 5 普通请求与ajax请求的报文头不一样,通过如下 6 7 String requestType = request.getHeader("X-Requested-With"); 8 9 如果requestType能拿到值,并且值为XMLHttpRequest,表示客户端的请求为异步请求,那自然是ajax请求了,反之如果为null,则是普通的请求 10 11 http:/

jfinal通过拦截器判断不同浏览器返回不同结果页面

目的 前端做了两套页面,一套PC ,一套手机,我想通过程序控制返回的页面,而Controller不需要关心终端,只需要render固定的字符串. 思路方法 拦截器拦截到render,然后修改viewpath 实现 关键代码 public class AppConst {     public static Routes SYSTEM_ROUTES = null ; } public class CmsConfig extends JFinalConfig {     public void co

自定义拦截器判断用户是否有权限访问

1.关于权限系统,对于用户是否有权限对系统进行访问,设置自定义拦截器,来拦截用户的请求 1 package org.slsale.interceptor; 2 3 import javax.annotation.Resource; 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import javax.servlet.http.HttpSessi

归属地拦截设置说明 - CC来电拦截

归属地拦截设置一共有四种情况 以来电规则以及保存020区号(广东省广州市)进行说明 1.黑名单模式: 匹配到地级市 关 这样只要是广东省的号码打过来都进行拦截.例:广东省深圳市来电将会拦截. 2.黑名单模式: 匹配到地级市 开 这样只要是 广州市 的号码打过来都进行拦截,其他不拦截.例:广东省深圳市来电不会拦截. 3.白单模式: 匹配到地级市 关 这样只要是广东省的号码打过来都不拦截.例:除广东省的来电都将会拦截. 4.白名单模式: 匹配到地级市 开 这样只要是 广州市 的号码打过来都不拦截,其

如果是判断是否登录拦截器

package com.ccsu.common.filter; import com.ccsu.common.constants.SessionConstants; import com.ccsu.entity.userSystem.User; import com.ccsu.util.userSystem.ProsReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework

android项目 之 来电管家(5) ----- 添加监听服务

上面四节,已经实现了界面设计,黑名单(白名单的添加与删除与黑名单同理,不再赘述),启用监听开关,定时拦截开关,及拦截模式选择等功能,下面就要实现来电管家最核心的功能,也就是拦截功能.   主要思路: 1.  制定拦截模式,这里主要有两个,一个是黑名单模式,也就是只拦截在黑名单中的号码:另一个就是白名单模式,拦截除了白名单以外的号码. 2.  根据用户自定义设置信息,制定正则表达式,判断拦截的标准. 3.  使用对应的类实现挂断电话的功能. 监听模块主要是利用service实现功能,为了实现电话挂

登陆拦截器总结

这是struts2中的登陆拦截器的实现流程 首先,启动服务器后,用户在地址栏输入地址,如果地址是以action结尾的,服务器中的前端控制器会对该action进行拦截,然后交给ActionProxy代理进行处理,主要目的是进行 增强,因为,最开始是用户进行登录,所以我们的目标类是StaffAction,将该action实例压入ValueStack栈中,下一步我们将进入到拦截器模块,我们使用的是自定义大的拦截器栈loginStack,该拦截器栈中包含默认的拦截器栈defaultStack和我们自定义

域名被墙怎么办如何判断域名是否被墙

域名被墙怎么办如何判断域名是否被墙?可以到这里查询一下域名是否被墙 http://www.zhanzhangbao.net/ 首先需要知道一下两个问题 Q:域名为什么被墙?A:网站下存在非法违规信息被拦截导致打不开Q:被墙了怎么办?A:更换域名 或者使用域名转发301跳转 网站被墙,原因主要有两种:域名被墙或IP被墙.域名被墙,可能是域名下的网站非法信息过多或有敏感内容,又不整改,则域名会被GFW屏蔽.虽然此时域名解析正常,但是在国内域名访问失败,国外访问是正常的. 域名被墙的原因很多: 比如政

Mybatis那些事-拦截器(Plugin+Interceptor)

作者:yhjyumi的专栏 Mybatis的拦截器实现机制,使用的是JDK的InvocationHandler. 当我们调用ParameterHandler,ResultSetHandler,StatementHandler,Executor的对象的时候,实际上使用的是Plugin这个代理类的对象,这个类实现了InvocationHandler接口.接下来我们就知道了,在调用上述被代理类的方法的时候,就会执行Plugin的invoke方法.Plugin在invoke方法中根据@Intercept