手机卫士 第八天

1,黑名单数据库创建
三个字段(_id 自增长字段 phone 黑名单号码  mode 拦截类型)

创建表的sql语句
create table blacknumber (_id integer primary key autoincrement , phone varchar(20), mode varchar(5));
结合项目,去创建数据库,以及相应的表
2,crud增删改查
android上junit测试,配置instrumentation,uses-library
3,数据适配器的模板代码
listView优化
1:复用convertView
2:复用ViewHolder让其减少findViewById()次数
3:static ViewHolder
4:分页算法
ViewHolder  viewHolder = null;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = View.inflate();
viewHolder.text1 = convertView.findViewById(R.id.text1);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.text1.setText("文本内容");




static class ViewHolder{
TextView text1;
}


4,数据库分页查询,逆序排列
按照_id逆序,查询后20条数据(limit 中第一位代表逆序的索引值,第二位代表查询的条目个数)
select * from blacknumber order by _id desc limit ?,20;




5,加载更多的触发条件
1.监听状态改变
2.滚动到最底部,最后一个listView的条目可见
3.滚动状态发生改变 滚动------>停止(空闲)


加载下一页数据完成后,需要添加到上一页数据的最后面 20 40 60 80 100


6,listView列表添加数据的过程
1.向数据库中插入一条数据
2.向结合中添加一条数据(最顶端)
3.通知数据适配器刷新


7,listView列表移除数据的过程
1.从数据库中删除一条数据
2.从结合中删除一条数据
3.通知数据适配器刷新


8,
  拦截短信
短信在接受的时候,广播发送,监听广播接受者,拦截短信(有序)
将广播的优先级级别提高到最高 (1000)


  拦截电话
有电话拨入,处于响铃状态,响铃状态通过代码去挂断电话(aidl,反射),拦截电话
挂断电话号码的方法,放置在了aidl文件中名称为endCall


在此处去查看TelePhoneManager源码,去查找获取ITelephony对象的方法


ServiceManager此类android对开发者隐藏,所以不能去直接调用其方法,所以需要反射调用
 获取iaidl所在的文件对象
           ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));


<uses-permission android:name="android.permission.CALL_PHONE"/>


//1,获取ServiceManager字节码文件
Class<?> clazz = Class.forName("android.os.ServiceManager");
//2,获取方法
Method method = clazz.getMethod("getService", String.class);
//3,反射调用此方法
IBinder iBinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE);
//4,调用获取aidl文件对象方法
ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder);
//5,调用在aidl中隐藏的endCall方法
iTelephony.endCall();
7,通话记录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值