day42_实战项目安全卫士之第05天

01_联系人电话日志短信日志导入黑名单

 

手动导入联系人:弹出对话框,让用户输入

 

 

 

02_三个功能的总结

电话日志 联系人日志 短信日志

1.抽取基类

通过分析,三个功能类似,只是数据不一样(initData())

2. 获取电话日志

    不能直接访问DB,需要内容提供者

    

3. 获取电话日志

03_黑名单拦截服务的启动和关闭

对短信和电话做拦截处理:

收到短信,接到电话,通过服务监控到短信号码和电话号码,分析黑名单数据库,是否需要拦截

1.创建服务,来监控电话和短信

 

2.打开或者关闭该服务

 

 

04_问题讲解

二进制(运行的原理,但是不能表示) 八进制(0打头) 十六进制(0x打头)
            十进制            
       在计算机中负数通过补码来表示
       最高位表示符号位
       如:byte 类型 157   二进制 1001 1101  是负数 ,补码来表示
         补码 到 源码  符号位不变  按位取反 + 1
          1001 1101
          1 110 0011

 

05_黑名单短信拦截

只需判断标识位即可

 

 

06_黑名单bug处理

 

 

07_链表

 

08_通过反射加aidl挂断电话

对短信和电话做拦截处理:

3.短信拦截,查询黑名单号码

 

4.电话拦截

 

类的修饰符只有 "public"和"省略":类的关系只有同包和不同包

AIDL:

反射 调用Android OS包里的类:

  1. 获取class类型

    a.类型.class eg:String.class

    b.Class.forname("类名");

    c.obj.getclass;

     

  2. 获取method

    class.getDe…..

  1. 产生对象(非静态方法)

    class.newInstance…

  2. 调用

    method.invoke(obj…

例子:

    

AIDL所在目录:

android.telephony

com.android.internal.telephony

AIDL文件目录必须和里面的包名保持一致:

import com.android.internal.telephony.ITelephony.ITelephony;

 

09_通过内容观察者删除电话日志

 

删除日志:

        不能通过睡眠来删除日志,应该注册内容观察者来删除电话日志

 

 

10_手机归属地数据库拷贝和业务类的封装

核心:电话归属地的数据库

数据库文件比较大,应该放在assert中,只增大APK的体积,不影响APK的功能

 

放到assert目录下的文件不能直接访问,需要 把文件拷贝到本地,才能使用

 

文件拷贝到本地(耗时的操作,只拷贝一次):放在Splash界面

 

 

 

归属地业务封装:

 

 

11_号码归属地查询

 

 

12_监听文本变化

 

  1. 监听文本的动态变化:

mEt_phone.addTextChangedListener(new TextWatcher() {

 

        @Override**********************

public void afterTextChanged(Editable editable) {

// 文本改变

locationQuery();

}

 

13_抖动的效果

14_震动的效果

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值