Android—ContentProvider读取系统联系人

我们主要是利用ContentProvider来共享其他程序的数据
需要借助ContentResolver类
这个类提供了一系列对数据处理的方法
读取联系人主要用到了查询方法,query();

来看一下核心代码

public void InitDate(){
        Cursor cursor =null;//Cursor 是每行的集合。
        try{
            cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null);
            //实例化ContentResolver 并查询联系人信息
            while(cursor.moveToNext()){
                String playname=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                //获取联系人姓名
                String numbel = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                //获取联系人电话
                Peo P = new Peo(playname,numbel);
                contactsList.add(P);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (cursor!=null) {
                cursor.close();
            }
        }
    }

核心代码就是这么多
其他的主要就是把数据放到listview中显示出来就好了
github源码下载地址

这个项目中的listview是已经经过两层优化的
我是把信息作为一个类传递给适配器的
嗯 在敲的过程中还遇到这样一个问题
There is no default constructor available in super()
这是我在继承ArrayAdapter的时候,子类出现该错误。创建构造函数依旧出错
原因是 ArrayAdapter没有无参构造函数,所以子类继承时,构造函数中必须显式调用父类构造方法,并且传递对应所需要的参数。
子类初始化的时候,先调用父类的构造方法。只有初始化以后再能调用类里面的非静态方法。在执行构造器前之前,当前类及父类所有的静态方法,静态变量,静态代码块都提前执行了

大概就酱紫 啦啦啦
over 以上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值