前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[android] 手机卫士读取联系人

[android] 手机卫士读取联系人

作者头像
唯一Chat
发布2019-09-10 14:40:40
6430
发布2019-09-10 14:40:40
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

获取ContentResolver内容解析器对象,通过getContentResolver()方法

调用ContentResolver对象的query()方法,得到raw_contacts表里面的数据,得到Cursor对象

参数:Uri对象,字段String数组

获取Uri对象,通过Uri.parse(“content://com.android.contacts/raw_contacts”)方法,

while循环Cursor对象,条件是Cursor对象moveToNext()方法为真

调用Cursor对象的getString()方法,参数是索引

判断不为null,查询另一张表

调用ContentResolver对象的query()方法,得到data表里面的数据,得到Cursor对象

参数:Uri对象,字段String[]数组(data1,mimetype),条件String,条件值String[]数组(contact_id)

Uri对象是Uri.parse(“content://com.android.contacts/data”)

循环和上面一样

姓名对应的类型是vnd.android.cursor.item/name

电话对应的类型是vnd.android.cursor.item/phone_v2

需要权限,android.permisssion.READ_CONTACTS

调用ListView对象的setAdapter()方法,分配数据到视图,参数是Adapter对象

通过new SimpleAdapter()来获得Adapter对象

参数:上下文,数据集合,布局资源,字段String[]数组,控件int[] id数组

代码语言:javascript
复制
package com.qingguow.mobilesafe.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
/**
 * 读取手机联系人
 * @author taoshihan
 *
 */
public class PhoneContactsUtil {
    public static List<Map<String,String>> getContacts(Context context){
        ContentResolver resolver=context.getContentResolver();
        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
        Uri dataUri=Uri.parse("content://com.android.contacts/data");
        List<Map<String,String>> contacts=new ArrayList<Map<String,String>>();
        
        //循环联系人表
        Cursor cursor=resolver.query(uri, new String[]{"contact_id"}, null, null, null);
        while(cursor.moveToNext()){
            String id=cursor.getString(cursor.getColumnIndex("contact_id"));
            if(id!=null){
                Map<String,String> contact=new HashMap<String,String>();
                //查找数据表
                Cursor dataCursor=resolver.query(dataUri, new String[]{"data1","mimetype"},"raw_contact_id=?", new String[]{id}, null);
                while(dataCursor.moveToNext()){
                    String data1=dataCursor.getString(dataCursor.getColumnIndex("data1"));
                    String mimetype=dataCursor.getString(dataCursor.getColumnIndex("mimetype")); 
                    System.out.println("data1:"+data1+",mimetype:"+mimetype);
                    if(mimetype.equals("vnd.android.cursor.item/name")){
                        contact.put("name", data1);
                    }else if(mimetype.equals("vnd.android.cursor.item/phone_v2")){
                        contact.put("phone", data1);
                    }
                }
                contacts.add(contact);
                dataCursor.close();
            }
        }
        cursor.close();
        return contacts;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档