24.Android-实现黑名单电话拦截
2017-07-16 10:18
351 查看
一.知识概括
二.具体代码实现
1.建aidl包
2.拷贝以下文件到项目的aidl包中
下载地址:
NeighboringCellInfo.aidl和ITelephony.aidl
3.在清单文件AndroidManifest.xml中添加权限
两部手机测试:一部连接Android Studio,一部打电话。如果电话在你的黑名单当中,会提示你所拨打的号码正在通话中。
类似的博客链接:http://blog.csdn.net/qq_37473021/article/details/55046772
二.具体代码实现
1.建aidl包
2.拷贝以下文件到项目的aidl包中
下载地址:
NeighboringCellInfo.aidl和ITelephony.aidl
3.在清单文件AndroidManifest.xml中添加权限
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zking.android24_zy"> <!-- 授予该应用读取通话状态的权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 授予该应用控制通话的权限 --> <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!--配置--> <receiver android:name=".MyBlacklist"> <intent-filter> <action android:name="android.intent.action.PHONE_STATE"></action> </intent-filter> </receiver> </application> </manifest>4.Java代码MyBlacklist.java
package com.zking.android24_zy; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; import com.android.internal.telephony.ITelephony; import java.lang.reflect.Method; /** * 黑名单 */ public class MyBlacklist extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if("android.intent.action.PHONE_STATE".equals(intent.getAction())){ //1.得到电话管理者 TelephonyManager tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int state=tm.getCallState();//得到电话的状态 switch (state) { case TelephonyManager.CALL_STATE_RINGING: //2.得到电话号码 String number=intent.getStringExtra("incoming_number"); Log.i("test","用户"+number+"来电了"); //3.得到电话管理者类对象 Class<TelephonyManager> clazz=TelephonyManager.class; try { //4.得到方法(的Method对象) Method method = clazz.getDeclaredMethod("getITelephony",null); //5.允许访问私有的方法 method.setAccessible(true); //6.执行方法 ITelephony iTelephony= (ITelephony) method.invoke(tm,null); //7.判断是不是这个号码是的话就挂断 if("18711126092".equals(number)){ iTelephony.endCall();//挂断电话 } break; } catch (Exception e) { e.printStackTrace(); } case TelephonyManager.CALL_STATE_OFFHOOK: Log.i("test","通话中...录音中"); break; case TelephonyManager.CALL_STATE_IDLE: Log.i("test","挂了"); break; } } } }5.效果图
两部手机测试:一部连接Android Studio,一部打电话。如果电话在你的黑名单当中,会提示你所拨打的号码正在通话中。
类似的博客链接:http://blog.csdn.net/qq_37473021/article/details/55046772
相关文章推荐
- android调用ITelephony类,AIDL实现电话,联系人黑名单拦截挂断服务
- 黑名单电话短信拦截实现
- Android四大组件应用系列——实现电话拦截和电话录音
- 121.黑名单拦截的实现
- android 黑名单中电话拦截
- 挂断电话的实现(即类似于电话号码黑名单)
- 黑名单电话和短信拦截
- Android广播接实现电话的监听(电话的状态,拦截)
- Android项目:手机安全卫士(12)—— 通讯卫士之电话短信黑名单设置与拦截
- android学习笔记---38_采用广播接收者拦截外拔电话,实现原理以及实例源码
- Android广播接实现监听电话状态(电话的状态,拦截)
- Android项目:手机安全卫士(12)—— 通讯卫士之电话短信黑名单设置与拦截
- 超越系统权限----Android黑名单电话拦截
- Android广播接实现电话的监听(电话的状态,拦截)
- Android广播接实现电话的监听(电话的状态,拦截)
- 挂断电话的实现(即类似于电话号码黑名单)
- 用BroadcastReceiver实现广播的电话拦截
- AIDL实现进程间通信,应用于电话拦截
- Android电话拦截实现以及TelephonyManager监听的取消
- Android:广播+AIDL实现电话拦截