当前位置:   article > 正文

内容访问者之获取联系人_录 读取联系人,用 展 系人

录 读取联系人,用 展 系人

这是效果图,如图所示,拿到了用户名和电话号码,废话少说进入主题吧!


首先我们来分析下布局,我用的是listview来展示信息的,觉得样式丑又有心的小伙伴可以自己动手改哦,毕竟我

主要讲的是如何实现访问系统的联系人


我们要访问手机的联系人,第一步当然是权限啦!!!

       

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

有了权限就好办多了,我们再次分析,看图,我们既然要用listview展示联系人,编号,电话号码,可以想到

肯定需要适配器,那么用什么适配器呢?ArrayAdapter适配器是不合适的,我们肯定是

SimpleAdapter了.


在使用适配之前我们要先解决数据源的问题


List<Map<String,String>> list=new ArrayList<Map<String, String>>();
得到内容访问者的uri,不然怎么知道你要去哪拿数据呢、
Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
Cursor cursor=cr.query(uri,null,null,null,null);

联系人可能不止一个,so....
while (cursor.moveToNext()){

Map<String,String> map=new HashMap<String,String>();

     拿到id
    int id=cursor.getInt(cursor.getColumnIndex("_id"));
     
    所有联系人
    String name=cursor.getString(cursor.getColumnIndex("display_name"));

    String pid=""+id;
   map.put("id",pid);
    map.put("name",name);

  我们的id是int类型的,所有需要转型,在这给大家分享几种类型装换的

          1 如何将字串 String 转换成整数 int?
         A. 有两个方法:
          1). int i = Integer.parseInt([String]); 
i = Integer.parseInt([String],[int radix]);

            2). int i = Integer.valueOf(my_str).intValue();

           注: 字串转成 Double, Float, Long 的方法大同小异.

           2 如何将整数 int 转换成字串 String ?

                   A. 有叁种方法:

                   1.) String s = String.valueOf(i);

           2.) String s = Integer.toString(i);

           3.) String s = "" + i;

           注: Double, Float, Long 转成字串的方法大同小异.


   其实在手机存储里,联系人姓名和电话号码是存在着一种类似联表关系的不同表中,

 所以,我们在上面为什么没拿电话号码,就解释的通了.

content://是我们需要的一个协议,和http协议类似

Uri uriData=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");
Cursor cursorData=cr.query(uriData,null,null,null,null);

 String data1=cursorData.getString(cursorData.getColumnIndex("data1"));
map.put("data1",data1);
          跟拿联系人名字一样

list.add(map);
再把map数据放入list集合,我们就解决数据源的问题了


SimpleAdapter simpleAdapter=new SimpleAdapter(
        this,//上下文
        lists,//数据源
        R.layout.item,//布局文件
        new String[]{"id","name","data1"},//数据从哪来
        new int[]{R.id.tv_item1,R.id.tv_item2,R.id.tv_item3});//数据放到哪去
//绑定适配器
lv_main_1.setAdapter(simpleAdapter);


总体来说还好,不是很复杂




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/245880
推荐阅读
相关标签
  

闽ICP备14008679号