package com.animee.day02.demo01;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import com.animee.day02.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取手机当中所有联系人的信息(id,姓名,电话号码,电子邮箱)
* */
public class ContactPhoneActivity extends AppCompatActivity {
private ListView contactLv;
private ContentResolver resolver;
private Uri rawUri,phoneUri;
private Uri emailUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_phone);
contactLv = (ListView) findViewById(R.id.contact_lv);
// 1.获取数据源
// 1.1数据源是系统数据库当中的内容,所以需要resolver获得,获得ContentResolver对象
resolver = getContentResolver();
// 1.2.获取访问的Uri地址 这个地址只能访问到联系人的id和姓名
rawUri = ContactsContract.Contacts.CONTENT_URI;
phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
// 1.3获取数据填充到ListView当中
inflateListView();
}
private void inflateListView() {
List<Map<String,String>>mDatas = new ArrayList<>();
Cursor cursor = resolver.query(rawUri, null, null, null, null);
// 获取cursor游标,判断游标是否有下一个数据
while (cursor.moveToNext()) {
Map<String,String>map = new HashMap<>();
String id = cursor.getString(cursor.getColumnIndex("_id"));
String display_name = cursor.getString(cursor.getColumnIndex("display_name"));
map.put("id",id);
map.put("name",display_name);
String phone = "";
// 获取指定id对应的电话号码
Cursor phoneCursor = resolver.query(phoneUri, null, "raw_contact_id=?", new String[]{id}, null);
if (phoneCursor.moveToFirst()) {
phone = phoneCursor.getString(phoneCursor.getColumnIndex("data1"));
}
map.put("phone",phone);
// 获取指定id对应的电子邮箱
String email = "";
Cursor emailCursor = resolver.query(emailUri, null, "raw_contact_id=?", new String[]{id}, null);
if (emailCursor.moveToFirst()) {
email = emailCursor.getString(emailCursor.getColumnIndex("data1"));
}
map.put("email",email);
mDatas.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, mDatas, R.layout.item_contact, new String[]{"id", "name", "phone", "email"}, new int[]{R.id.tv_id, R.id.tv_name, R.id.tv_number, R.id.tv_email});
contactLv.setAdapter(adapter);
}
}
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import com.animee.day02.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 获取手机当中所有联系人的信息(id,姓名,电话号码,电子邮箱)
* */
public class ContactPhoneActivity extends AppCompatActivity {
private ListView contactLv;
private ContentResolver resolver;
private Uri rawUri,phoneUri;
private Uri emailUri;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact_phone);
contactLv = (ListView) findViewById(R.id.contact_lv);
// 1.获取数据源
// 1.1数据源是系统数据库当中的内容,所以需要resolver获得,获得ContentResolver对象
resolver = getContentResolver();
// 1.2.获取访问的Uri地址 这个地址只能访问到联系人的id和姓名
rawUri = ContactsContract.Contacts.CONTENT_URI;
phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
emailUri = ContactsContract.CommonDataKinds.Email.CONTENT_URI;
// 1.3获取数据填充到ListView当中
inflateListView();
}
private void inflateListView() {
List<Map<String,String>>mDatas = new ArrayList<>();
Cursor cursor = resolver.query(rawUri, null, null, null, null);
// 获取cursor游标,判断游标是否有下一个数据
while (cursor.moveToNext()) {
Map<String,String>map = new HashMap<>();
String id = cursor.getString(cursor.getColumnIndex("_id"));
String display_name = cursor.getString(cursor.getColumnIndex("display_name"));
map.put("id",id);
map.put("name",display_name);
String phone = "";
// 获取指定id对应的电话号码
Cursor phoneCursor = resolver.query(phoneUri, null, "raw_contact_id=?", new String[]{id}, null);
if (phoneCursor.moveToFirst()) {
phone = phoneCursor.getString(phoneCursor.getColumnIndex("data1"));
}
map.put("phone",phone);
// 获取指定id对应的电子邮箱
String email = "";
Cursor emailCursor = resolver.query(emailUri, null, "raw_contact_id=?", new String[]{id}, null);
if (emailCursor.moveToFirst()) {
email = emailCursor.getString(emailCursor.getColumnIndex("data1"));
}
map.put("email",email);
mDatas.add(map);
}
SimpleAdapter adapter = new SimpleAdapter(this, mDatas, R.layout.item_contact, new String[]{"id", "name", "phone", "email"}, new int[]{R.id.tv_id, R.id.tv_name, R.id.tv_number, R.id.tv_email});
contactLv.setAdapter(adapter);
}
}