您的位置:首页 > 移动开发 > Android开发

Android中高版本拦截到骚扰电话自动挂断的实现

2014-08-13 22:57 344 查看

#前言

在安卓低版本中,直接可以通过API的方式来实现,在高版本中,我们不可以直接挂断电话。原因也就不说了,都清楚。

#具体实现

在高版本中,我们需要用反射机制,来调用系统底层的电话服务,而我们通过getSystemService方法获得到的只是一个代理类,并不是真正的IBinder对象。

如果我们想挂断电话,需要把两个系统的aidl文件复制进我们的工程里面,来进一步绑定服务

android.telephony.NeighboringCellInfo.aidl

com.android.internal.telephony.ITelephony.aidl

把这两个aidl复制进工程,注意包名需要完全一致。

然后可以通过以下主要代码实现

public void endCall() {
		
		try {
			//加载servicemanager的字节码
			Class clazz = CallSmsSafeService.class.getClassLoader().loadClass("android.os.ServiceManager");
			Method method = clazz.getDeclaredMethod("getService", String.class);
			IBinder ibinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);
			ITelephony.Stub.asInterface(ibinder).endCall();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}


这样就OK了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: