[mobilesafe] 15_锁屏&数据库优化及拷贝到系统目录&手机归属地查询及细节&&土司来电归属地显示&动态注册广播接收者&自定义Toast总结

Android 4.0

锁屏&数据库优化及拷贝到系统目录&手机归属地查询及细节&&土司来电归属地显示&动态注册广播接收者&自定义Toast总结

1、Administration API的应用(企业级api)——一键锁屏
a) 开启设备管理员权限(手动和api-看文档)
b)  一键开启锁屏  DevicePolicyManager    lockNow()
c)  一键卸载  removeActiveAdmin(who)  
d)  判断是否开启了设备管理员 isAdminActive(who)
e)  设置锁屏密码   DevicePolicyManager.resetPassword("123", 0);
f) 清除锁屏密码   DevicePolicyManager.resetPassword("", 0);
2、数据库优化
如果数据库的体积过大,拆分多张表,提取冗余数据
3、拷贝数据库到系统目录
a) assets
b) R.raw 
c) 类加载器
d) 网络下载
4、手机号码固话归属地查询
离线数据库,小米数据库
5、号码归属地查询细节
a) 输入框为空的时候,查询时,窗口抖动(参考系统API Demos)-正则表达式
b) 手机抖动 Vibrator
c) 用户输入号码后,光标离开文本框,自动进行查询出结果,文本框的监听事件
et_phone_number.addTextChangedListener(new TextWatcher() {}
6、土司显示来电归属地 ——WindowManager,Toast
设置界面中配置,
如何保存是否服务在运行?
a) 不能用SharedPreferences保存
b) 系统检测服务是否运行 activityManager.getRunningServices(100);
c) 检测要放在onStart()方法中,不能放在onCreate(),否则有bug。
7、动态的在代码上注册广播接收者,以及和在清单文件中注册广播接收者的区别
需求:外拨电话时,也显示电话号码归属地
解决1:在外拨电话的广播接收者中实现归属地查询
缺点:不管有没有开启归属地查询功能,该代码都是会执行
解决2:在代码中,动态的注册该外拨电话的广播接收者
可以动态的控制外拨电话广播接收者的有效期。
清单文件配置和代码中配置区别:

TelephonyMangager 监视电话状体的变化.
8、更改归属地提示框样式
单选对话框
9、更改归属地提示框显示的位置
view对象的拖动,拖拽效果的实现