1,获取系统联系人信息
- 了解 系统的 ContactsProvider 内容提供者应用
- com.android.providers.contacts 包
- contact2.db 数据库
- 表 raw_contacts(contact_id,display_name)
contact_id 3 4
保存每个联系人的id ,每一个联系人对应 一个contact_id - 表 data(mimetype_id,raw_contact_id,)
保存联系人的数据,通过raw_contact_id 来识别这个数据属于哪个联系人,通过mimetype_id 识别该数据的类型 - 表 mimeTypes : 表示数据的类型
- 视图 :view_data : 把data表和mimeTypes表整合
- 通过内容提供者获取联系人数据
- 认证、权限: com.android.contacts或者 contacts(早期版本的认证)
- 访问raw_contacts表的uri: content://com.android.contacts/raw_contacts
- 访问view_data表的uri:content://com.android.contacts/data
- 访问系统的联系人信息需要权限
- android.permission.READ_CONTACTS
- android.permission.WRITE_CONTACTS
- 展示及获取选择的联系人
- 通过ListView展示查询到的系统联系人信息
listview的详解
见: http://www.cnblogs.com/devinzhang/archive/2012/01/20/2328334.html
采用baseAdapter - 当选择某个联系人,应该回调数据给安全号码编辑框
- 通过ListView展示查询到的系统联系人信息
,2、手机防盗功能实现
手机定位 、 报警音乐 、 远程擦除数据、 远程锁屏
1. 如何接受指令
采用消息推送的方式 :
- 采用Socket 的形式来推送消息
Socket它是长连接的协议,而Http协议是短连接的协议,socket通信有可能被防火墙连接(连接但是没消息-不活跃连接 会被认为占用内存会被防火墙消化)
解决方法: 采取心跳机制方式来解决(每隔一段时间发送空包或者几字节的信息,会耗流量,但是会保持活跃状态)不足: 必须要有联互联网- 通过移动运营商的短信方式实现推送消息 (不能欠费、要有移动信号,扣费)
(本项目就是采用这种)
- 采用第三方应用框架实现推送1. 即时通信框架 :xmpp 2. 免费的推送软件 : 极光推送
采用短信发送指令
- 定义一个订阅短信的广播接收器
步骤:
- 继承BroacastReceive ,重写onReceive(),并且通过Intent获取短信
- 注册接收器,并且订阅 短信广播的事件
android.provider.Telephony.SMS_RECEIVED - 设置优先级 android:priority=”1000”
- 截断广播的传递
abortBroadcast();
5.接受短信需要权限 :android.permission.RECEIVE_SMS
- 手机定位功能
- 手机定位方式(百度地图)
- GPS定位 、北斗导航
- wifi定位 : 网络定位(ip地址) ,不是很精确
- 基站定位 (华为、中兴)
- Android 实现的位置定位
LocationManager :
// 获取位置信息 需要权限
- 手机定位方式(百度地图)
- 播放报警音乐功能
一键锁屏功能
远程擦除数据功能
- 定义一个订阅短信的广播接收器