ContentResolver实现获取手机联系人并显示在ListView中

1.首先知道联系人的uri:

联系人
<1>content://com.android.contacts/raw_contacts(获得联系人的id,姓名)
<2>content://com.android.contacts/raw_contacts/"+id+"/data(根据联系人的id获得联系人的信息)

2.实现步骤

1.先获取内容访问者用uri地址获取手机联系人里的姓名和电话号码id;2.然后在用游标接收;3.然后用while遍历出来;4.定义一个list集合保存数据;5.设置一个适配器;6.给LIstView添加适配器

3.实现代码

public class MainActivity extends AppCompatActivity {
    private ContentResolver cr;
    private ListView listview;
    private SimpleAdapter person;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview = (ListView) findViewById(R.id.listview);
        cr = getContentResolver();//获取内容访问者
        //定义一个集合保存手机联系人数据
        List> personDate=new ArrayList<>();
        //配置适配器
   person= new SimpleAdapter(this, personDate, android.R.layout.simple_list_item_2, new String[]{"names", "phones"},
           new int[]{android.R.id.text1, android.R.id.text2});
        //给ListView添加适配器
        listview.setAdapter(person);
    }
       //获取手机联系人
    public void ok(View view){
        //(获得联系人的id,姓名)
        Uri uri=Uri.parse("content://com.android.contacts/raw_contacts");
       //用游标接收
        Cursor cursor=cr.query(uri,null,null,null,null);
        while (cursor.moveToNext()){
            int id=cursor.getInt(cursor.getColumnIndex("_id"));
            String name=cursor.getString(cursor.getColumnIndex("display_name"));//得到联系人名字
            Log.i("test",id+" "+name);
           //根据联系人的id获得联系人的信息
            Uri uri1=Uri.parse("content://com.android.contacts/raw_contacts/"+id+"/data");
            Cursor cursor1=cr.query(uri1,null,null,null,null);
            cursor1.getColumnNames();
            while (cursor1.moveToNext()){
               String date1=cursor1.getString(cursor1.getColumnIndex("date1"));
               String type=cursor1.getString(cursor1.getColumnIndex("mimetype"));
                Log.i("test","    "+date1+"  : "+type); //测试
            }
        }
    }
}

4.AndroidManifest.xml里面的权限 联系人的权限

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




你可能感兴趣的:(ContentResolver实现获取手机联系人并显示在ListView中)