Android中自动拦截电话
来源:互联网 发布:java 命令行模式 编辑:程序博客网 时间:2024/04/25 13:46
1.AndroidMainFest.xml文件设置
需要的权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.CALL_PHONE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.WAKE_LOCK"/>
注册服务:<service android:name=".MyService"/>2.添加AIDL文件(a、包名:com.android.internal.telephony的ITelephony类 b、包名:android.telephony的NeighboringCellInfo类)NeighboringCellInfo类里边的内容(package android.telephony;parcelable NeighboringCellInfo;)3.public class MyService extends Service {
//系统提供的电话管理器private TelephonyManager telephonyManager;private MyPhoneListener myPhoneListener;@Overridepublic IBinder onBind(Intent intent) {return null;}@Overridepublic void onCreate() { telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); myPhoneListener = new MyPhoneListener(); telephonyManager.listen(myPhoneListener, PhoneStateListener.LISTEN_CALL_STATE); super.onCreate();}private class MyPhoneListener extends PhoneStateListener{ @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state){ case TelephonyManager.CALL_STATE_IDLE: break; case TelephonyManager.CALL_STATE_RINGING: endCall(); Toast.makeText(getApplication(),"挂了!",Toast.LENGTH_SHORT).show(); break; case TelephonyManager.CALL_STATE_OFFHOOK: break; } }}private void endCall(){ try { Class aClass = getClassLoader().loadClass("android.os.ServiceManager"); Method method = aClass.getDeclaredMethod("getService",String.class); IBinder iBinder = (IBinder) method.invoke(null,TELEPHONY_SERVICE);在使用ITelephony类之前先clean一下项目,不然可能找不到 ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder); iTelephony.endCall(); } catch (Exception e) { e.printStackTrace(); }}@Overridepublic void onDestroy() { telephonyManager.listen(myPhoneListener, PhoneStateListener.LISTEN_NONE); myPhoneListener = null; super.onDestroy();}4.MainActivity
private Intent callSmsSafeIntent;在onCreate方法中{callSmsSafeIntent = new Intent(this,MyService.class);//开启拦截服务startService(callSmsSafeIntent);}
0 0
- Android中自动拦截电话
- 黑名单电话自动拦截【Android】
- android 黑名单中电话拦截
- Android Studio中拦截电话的方法
- Android中电话拦截器案例
- android 电话拦截
- Android拦截电话
- android电话拦截
- Android电话拦截
- Android电话拦截操作
- Android - 电话拦截
- Android 电话拦截
- Android拦截电话
- Android电话拦截研究
- Android电话拦截
- Android之电话拦截
- Android电话拦截demo
- 在android中监听呼出电话(电话拦截、修改呼出电话)
- WeakHashMap的Weak原理
- 网管的自我修养-信息系统
- 51Nod - 1246 思维题
- 项目中获取服务器端时间在前台显示
- Eclipse启动自动加载指定工作空间
- Android中自动拦截电话
- android 事件传递
- Flink之一 Flink基本原理介绍
- 453. Minimum Moves to Equal Array Elements [LeetCode]
- 创建第一个微信小程序
- 分中心重新生成对账文件
- 设计模式-代理模式
- PHP数组FOREACH逆序输出,PHP数组倒序
- android studio中运行项目出现的坑