博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1-AIV--使用ContentProvider获取短信
阅读量:6835 次
发布时间:2019-06-26

本文共 2711 字,大约阅读时间需要 9 分钟。

零、前言

[1].顾名思义,内容提供者,目的:实现跨进程间数据共享

[2].基于数据库提供数据
[3].如电话簿,短信,歌曲信息都是以数据库存储存储,都可以通过ContentProvider获取
[4].不太熟悉安卓运行时权限的童鞋可以看一下我封装的权限申请类:
[5].如果只是想使用的人,直接把静态方法拷贝。
[6].本文只打印一下查询结果:ListView篇将会界面展示数据,Xml篇将会介绍备份到本地

一、代码实现

1.实体类
/** * 作者:张风捷特烈 * 时间:2018/4/12:16:46 * 邮箱:1981462002@qq.com * 说明:短信实体类 */public class SMSBean {    /**     * 短信发送方     */    public String address;    /**     * 号码在通讯录中的姓名:无为null     */    public String name;    /**     * 短信时间     */    public String date;    /**     * 短信内容     */    public String body;    /**     * 1 接收短信 2 发送短信     */    public int type;    /**     * 同一个手机号互发的短信,其序号是相同的     */    public int thread_id;    @Override    public String toString() {        return "SMSBean{" +                "address='" + address + '\'' +                ", name='" + name + '\'' +                ", date='" + date + '\'' +                ", body='" + body + '\'' +                ", type=" + type +                ", thread_id=" + thread_id +                '}';    }}
2.查询联系人的封装方法
/**     * 获取短信:SMSBean:address发信人  date时间  body信息内容     *     * @param ctx 上下文     * @return 短信bean集合 注意添加读取短信权限     */    public static List
getSMS(Context ctx) { List
smsBeans = new ArrayList<>(); //[1.]获得ContentResolver对象 ContentResolver resolver = ctx.getContentResolver(); //[2.1]得到Uri :访问raw_contacts的url Uri uri = Uri.parse("content://sms"); //[3]查询表,获得sms表游标结果集 String[] projection = {"address", "date", "body", "type","person","thread_id"};//访问表的字段 Cursor cursor = resolver.query( uri, projection, null, null, null); while (cursor.moveToNext()) {//遍历游标,获取数据,储存在bean中 SMSBean smsBean = new SMSBean(); smsBean.address = cursor.getString(0); smsBean.date = cursor.getString(1); smsBean.body = cursor.getString(2); smsBean.type = cursor.getInt(cursor.getColumnIndex("type")); smsBean.name = cursor.getString(cursor.getColumnIndex("person")); smsBean.thread_id = cursor.getInt(cursor.getColumnIndex("thread_id")); smsBeans.add(smsBean); } cursor.close(); return smsBeans; }
3.使用:权限:<uses-permission android:name="android.permission.READ_SMS"/>

注意:查询数据库是耗时操作,为了不阻塞主线程,最好新建个线程操作

new Thread(new Runnable() {    @Override    public void run() {        List
contact = PhoneUtils_Contact.getContact(MainActivity.this); System.out.println(contact.get(0)); }}).start();
4.结果
短信.png

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明

[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力

2.连接传送门:

3.联系我

QQ:1981462002

邮箱:
微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg
你可能感兴趣的文章
我的友情链接
查看>>
ratio 是否压缩
查看>>
IDEA导入spark源代码调试
查看>>
用rm递归递归删除子目录下所有文件
查看>>
安装完CentOS7后提示Initial setup of CentOS Linux 7 (core)
查看>>
Ubuntu下fossolgy安装步骤
查看>>
python基础数据类型(二)
查看>>
我的友情链接
查看>>
jvm远程监控配置,以openfire为例,jmx方式监控
查看>>
Linux 系统性能分析工具sar一
查看>>
关于客户端不能连接mysql服务器的解决办法
查看>>
SQL Server 数据加密功能解析
查看>>
Android 屏蔽recent按键 ,Home按键,Recent按键的监听可以用广播,还有开机启动app...
查看>>
使用maven将jar包生成maven依赖及pom到本地仓库
查看>>
【iOS-Cocos2d游戏开发之十三】CCSprite利用Bezier(贝塞尔)抛物线并同时播放两个Action动作!...
查看>>
帕特•基辛格:EMC要成为最优秀的数据中心架构厂商
查看>>
LINUX下WEBLOGIC卸载
查看>>
YAHOO 工程师CSS初始化代码
查看>>
个人--理财经验001-2015.07.25
查看>>
单例模式Singleton
查看>>