骚然拦截的一些实现

    

01.下拉加载更多的实现

a.触发ListView上滑加载更多的时机,当滑动到最后一个的时候.
b.在适配器当中,重写方法 onScrollStateChanged()滑动状态改变【无视】
c.在适配器当中,重写方法onScroll()滑动的时候.注意参数
d.得到ListView最后一条列表数据的API:
        int lastPosition = mListView.getLastVisiblePosition();
e.数据库的分页查询.得到part集合.参数1:每一页显示多少个数目,参数2:从哪个位置开始查询
f.把当前的part集合添加到数据库当中.mDatas.addAll(part集合);
g.更新UI的操作【更新适配器】adapter.notifyDataSetChanged();
h.注意BUG 线程还没有结束,就开始下一次的加载.设置boolean开关值
i.加载到最后的一个时候,还能够加载?设置boolean开关值

02.骚扰拦截服务状态的显示

a.定义工具类,采用系统服务 ActivityManager.得到当前运行的所有进程
b.循环遍历当前所有进程.得到的进程名称做比较
c.如果存在相同的进程名称,表示当前的服务处理运行的状态为 true
d.如果不存在,则返回当前的状态值为 false
e.根据查询的状态值,更新“设置中心”骚扰拦截服务开关的UI
f.注意骚扰拦截服务开关回显操作.在onStart()方法当中去回显UI状态

03.骚扰拦截短信拦截功能的实现

a.在骚扰拦截服务的onCreate()方法里面,动态注册广播 registerReceiver(mSmsReceiver, filter);
b.同时在骚扰拦截服务的onDestroy()方法当中反注册广播 unregisterReceiver(mSmsReceiver);
c.在广播接收者里面的onReceive()方法当中,解析短信信息.得到短信的发信人电话号码.通过电话号码,查询骚扰拦截黑名单数据.
d.如果黑名单的数据当中,拦截的状态是“短信拦截”或者是“全部拦截”这里就拦截当前的广播abortBroadcast();
e.注意权限:接收短信的权限

04.电话拦截的时机

a.黑名单电话拦截的时机是当来电处于响铃状态的时候,帮助用户挂断电话
b.采用的API: TelephonyManager的对象去监听电话 tm.listener();
c.注意需要在onDestroy()方法当中,反注册监听操作tm.listener();
d.在监听回调的方法当中,关注响铃的状态,重写方法onCallStateChanged().响铃状态 TelephonyManager.CALL_STATE_RINGING

05.拦截电话的AIDL文件使用

a.拦截电话的操作,需要使用aidl文件
b.通过查看源码数据得到.注意源码的网站地址:
        查看源码的网站地址:  http://grepcode.com/
        下载源码的网站地址:  http://androidxref.com/
c.如果下载到的aidl文件拷贝到安卓项目当中,需要注意点:包名称必须保持一致

06.挂断电话的实现

a.挂断电话采用的是,得到系统的服务iTelephony去再一次调用系统的服务操作
b.这里第二次调用过程当中,服务里面的方法是隐藏的.使用的是反射调用方法实现

07.删除呼叫记录

a.呼叫记录保存在系统的数据库当中
b.对于系统数据库的操作,采用的是内容提供者ContentProvider
c.对于呼叫记录数据的变化监听,使用的是双面间谍.内容观察者ContentObserver
d.当呼叫记录数据发生变化的时候,删除当前的呼叫记录,同时注销内容观察者contentResolver.unregisterContentObserver(this);
e.注意操作过程当中的权限:
        android.permission.READ_CONTACTS
        android.permission.WRITE_CONTACTS

08.号码归属地的UI操作

a.号码归属地的UI和设置中心的UI效果类似
b.注意需要实现Activity的跳转功能
c.Activity需要在清单文件当中注册

09.归属地ApiDemos源码的查看

a.打开apiDemos的APP应用程序.查看程序的某个字符串信息,例如: Please enter your password
b.按下快捷键 Ctrl + H 整个项目当中搜索数据
c.其他的常用的快捷键:
    Ctrl + Shift + H 搜索某个Java文件
    Ctrl + Shift + R 搜索某个Xml资源文件
    Ctrl + O 查看大纲视图
    Ctrl + T 查看继承关系
    Ctrl + K 查看当前的单词出现的位置
    Ctrl + F 查找/替换某个单词

10.手机号码归属地的查询实现

a.拷贝淘宝购买的数据库到项目的资产目录assets文件夹当中.
b.在SplashActivity当中,读取资产目录的数据,写入到私有文件的目录,需要注意的API:
        InputStream is = context.getAssets("address.db");
        File file = new File(context.getFilesDir(),"address.db");
c.主要使用的是基础IO流的读写操作
d.得到数据库SQLiteDataBase的对象API:
        SQLiteDataBase db = SQLiteDataBase.open("文件路径",null,只读模式标识FLAG);
e.执行查询的操作
        db.rawQuery(查询的SQL语句,查询条件);

11.其他类型的号码归属地查询的实现

a.采用正则表达式.判断当前的号码是否是手机号码
        // 13,14,15,17,18 ---> 11位
        // 1[34578]\d
        String reg = "^1[34578]\\d{9}$";
        boolean isPhone = number.matches(reg);
b.采用字符串操作的API:判断当前号码的位数.得到归属地信息

12.号码的动态查询方式:

输入框的输入数据长度动态变化的监听API:
        mEtNumber.addTextChangedListener(new TextWatcher(){
                public void onTextChanged(CharSequence s, int start, int before,int count) { .... }
        }   

13.优化操作GZip的压缩

a.将原始的InputStream和OutputStream的形式进行封装的操作
b.采用新的IO流
        GZIPInputStream
        GZIPOutputStream
c.压缩之后,原始的数据大小就会变小.同时APK的大小也会变小.
d.参考代码: org.itheima.safe.utils.GZipUtils

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值