1.布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditText
        android:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/ma_itc_et"/><Button
        android:layout_width="match_parent"android:layout_height="wrap_content"android:text="确认"android:onClick="yes"/>
</LinearLayout>

2.java代码

public class MainActivity extends AppCompatActivity {private EditText ma_itc_et;private String number;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ma_itc_et = (EditText) findViewById(R.id.ma_itc_et);//从SharedPreferences获取保存号码的路径SharedPreferences spe = this.getSharedPreferences("yyy", this.MODE_PRIVATE);//根据路径来得到取出保存的号码String data =spe.getString("code", "");ma_itc_et.setText(data);}public void yes(View view) {number = ma_itc_et.getText().toString();//把输入框里面的值通过SharedPreferences保存,第一个参数是取个文件名SharedPreferences.Editor editor = getSharedPreferences("yyy", MODE_WORLD_WRITEABLE).edit();//第一个参数是键,第二个是电话号码editor.putString("code", number);editor.commit();}
}

3.注册一个广播

public class MyphoneState extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if ("android.intent.action.PHONE_STATE".equals(intent.getAction())) {String phone = intent.getStringExtra("incoming_number");//从SharedPreferences获取保存号码的路径SharedPreferences spe = context.getSharedPreferences("yyy", context.MODE_PRIVATE);//根据路径来得到取出保存的号码String data =spe.getString("code", "");//把来电的号码跟你输入的号码判断//其实可以不用判断也不用页面那样的话任何来电都会挂断if (phone.equals(data)) {TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(context.TELEPHONY_SERVICE);int state = telephonyManager.getCallState();switch (state) {//来电状态case TelephonyManager.CALL_STATE_RINGING://得到TelephonyManager的Class对象Class<TelephonyManager> telephonyManagerClass = TelephonyManager.class;try {//得到TelephonyManager.getITelephony方法的Method对象Method method = telephonyManagerClass.getDeclaredMethod("getITelephony", null);//允许访问私有方法method.setAccessible(true);//调用getITelephony方法发挥ITelephony对象ITelephony telephony = (ITelephony) method.invoke(telephonyManager, null);//挂断电话telephony.endCall();} catch (Exception e) {e.printStackTrace();}break;//通话状态case TelephonyManager.CALL_STATE_OFFHOOK:break;//挂断状态case TelephonyManager.CALL_STATE_IDLE:break;}}}}
}

4.在AndroidManifest文件添加权限和配置广播

    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><!--允许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认--><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission><receiver android:name=".MyphoneState"><intent-filter><action android:name="android.intent.action.PHONE_STATE"></action></intent-filter></receiver>

5.在项目下建个aidl文件夹,把这两个文件夹复制进去

Android之实现手机号码拦截相关推荐

  1. Android 广播+服务+AIDL一起实现手机号码拦截

    在这里跟大家分享下仿手机号码拦截,比如你设置一个号码,然后这个号码打电话进来就会被自动挂掉而且手机不会有任何的记录. 我们的实现思路是直接接受来电的广播判断号码然后用官方提供的AIDL中的方法去挂掉电 ...

  2. 【Android 逆向】函数拦截实例 ( ③ 刷新 CPU 高速缓存 | ④ 处理拦截函数 | ⑤ 返回特定结果 )

    文章目录 前言 一.刷新 CPU 高速缓存 二.处理拦截函数 1.桩函数 2.处理拦截函数 三.返回特定结果 四.相关完整代码 前言 [Android 逆向]函数拦截实例 ( 函数拦截流程 | ① 定 ...

  3. 【Android 逆向】函数拦截实例 ( ② 插桩操作 | 保存实际函数入口 6 字节数据 | 在插桩的函数入口写入跳转指令 | 构造拼接桩函数 )

    文章目录 前言 一.函数拦截需要的几个参数 二.插桩前先保存实际函数入口 6 字节数据 三.在插桩的函数入口写入跳转指令 | 构造拼接桩函数 前言 [Android 逆向]函数拦截实例 ( 函数拦截流 ...

  4. 【Android 逆向】函数拦截 ( ARM 架构下的插桩拦截 | 完整代码示例 )

    文章目录 一.ARM 架构下的插桩拦截 二.完整代码示例 一.ARM 架构下的插桩拦截 ARM 架构下的跳转指令 : 下面的二进制数都是十六进制数 ; 323232 位指令 ; 04 F0 1F E5 ...

  5. 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )

    文章目录 一.GOT 表拦截与插桩拦截 二.插桩拦截简介 三.插桩拦截涉及的 ARM 和 x86 中的跳转指令 一.GOT 表拦截与插桩拦截 函数拦截有 222 种方式 : 使用 GOT 表进行函数拦 ...

  6. 【Android 逆向】函数拦截 ( CPU 高速缓存机制 | CPU 高速缓存机制 导致 函数拦截失败 )

    文章目录 一.CPU 高速缓存机制 二.CPU 高速缓存机制 导致 函数拦截失败 一.CPU 高速缓存机制 CPU 架构模型中 , 指令 在开始时 , 存放在内存中 , 如 : /proc/pid/m ...

  7. Android 系统(254)---Android libphonenumber Demo 手机号码归属地

    Android libphonenumber Demo 手机号码归属地 libphonenumber 是google 开源的库,提供手机号码格式化,来电归属地,运营商等多种功能十分强大,现在做个简单的 ...

  8. android 黑名单 短信拦截

    上一篇讲了电话拦截,现在讲一下短信拦截. 由于android4.4以上,提高了系统的安全性,同时,也对短信的处理进行了保护 先来讲一下在android4.4以下的短信拦截机制 在android4.4一 ...

  9. 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 )

    文章目录 一.通过修改 GOT 全局偏移表拦截函数 二.通过在实际被调用的函数中添加跳转代码实现函数拦截 一.通过修改 GOT 全局偏移表拦截函数 使用 GOT 全局偏移表 拦截函数 , 只需要将 G ...

最新文章

  1. python 版本比较函数 LooseVersion StrictVersion
  2. 网络嗅探混杂模式与非混杂模式的区别
  3. 分享一个牛逼的阿里天猫面经,已经拿到 Offer ,来自朋友的朋友
  4. reactjs使用eject暴露webpack核心配置
  5. python中x_python中round(x,[n])的使用
  6. python中again函数怎么用_《“笨方法”学python 》 once again 20170729
  7. 哪吒之魔童降世视听语言影评_《哪吒之魔童降世》影评:生而孤独,从不认命...
  8. html dl dt dd 标签语法与使用
  9. cacti 文件服务器,免费的服务器和网络监控工具-CactiEZ
  10. css强制一行显示超出的部分显示点点点
  11. 深入浅出 - Android系统移植与平台开发(四)- Android启动流程
  12. 电脑计算机c盘打不开怎么办,电脑的c盘炸了打不开电脑了怎么处理
  13. 我的职业性格测评报告
  14. windows防火墙
  15. 什么是 95计费方式
  16. bilibili漫游自建服务器,【分享】bilibili太极模块---哔哩漫游
  17. linux下阅读MHT文件
  18. 小白也能做的选择(上)
  19. 国外拜访客户,实用小贴士
  20. 基于网络媒介的交互设计研究

热门文章

  1. 英二变英一,数二变数一!考研人太难了……
  2. 青龙面板+xdd-plusQQ机器人便捷登陆查询保姆级搭建教程
  3. 【Matlab】多元线性回归
  4. 云服务器ECS远程监控
  5. ai怎么做波普风圆点_超实用AI描边小技巧:AI画一个圆点组成的圆
  6. 【产品设计】浅析产品新手引导设计
  7. SD省队集训2019Day11之“loopy”
  8. 通讯录二维码使英文变为中文
  9. C语言十六进制转八进制
  10. 【报告分享】2021百度快消人群洞察-百度营销研究院(附下载)