标签:联系人
--------------main.java-----------------
package com.example.vd;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends ActionBarActivity {
private ListView list_select_contact;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list_select_contact = (ListView) findViewById(R.id.list_select_contact);
final List<Map<String, String>> data = getContactInfo();
list_select_contact.setAdapter(new SimpleAdapter(this, data,
R.layout.line, new String[] { "name", "phone", "others" },
new int[] { R.id.tv_name, R.id.tv_phone, R.id.tv_other }));
}
/**
* 读取手里面的联系人
*
* @return
*/
private List<Map<String, String>> getContactInfo() {
//把所有的联系人
List<Map<String, String>> list = new ArrayList<Map<String,String>>();
// 得到一个内容解析器
ContentResolver resolver = getContentResolver();
// raw_contacts uri
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri uriData = Uri.parse("content://com.android.contacts/data");
Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
null, null, null);
while (cursor.moveToNext()) {
String contact_id = cursor.getString(0);
if (contact_id != null) {
//具体的某一个联系人
Map<String, String> map = new HashMap<String, String>();
Cursor dataCursor = resolver.query(uriData, new String[] {
"data1", "mimetype" }, "contact_id=?",
new String[] { contact_id }, null);
while (dataCursor.moveToNext()) {
String data1 = dataCursor.getString(0);
String mimetype = dataCursor.getString(1);
System.out.println("data1=="+data1+"==mimetype=="+mimetype);
if("vnd.android.cursor.item/name".equals(mimetype)){
//联系人的姓名
map.put("name", data1);
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
//联系人的电话号码
map.put("phone", data1);
} else if("vnd.android.cursor.item/note".equals(mimetype)){
map.put("others", data1);
}
}
list.add(map);
dataCursor.close();
}
}
cursor.close();
return list;
}
}
。。。。。。。。main.xml。。。。。。。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/list_select_contact"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="15dip"
android:verticalSpacing="10dip" />
</LinearLayout>
。。。。。。/layout/line.xml。。。。。。。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff00ff"
/>
<TextView
android:id="@+id/tv_phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff00ff"
/>
<TextView
android:id="@+id/tv_other"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff00ff"
/>
</LinearLayout>
、、、、、、、、、权限、、、
<uses-permission android:name="android.permission.READ_CONTACTS"/>
~~~~~~~~~~~附加说明~~~~~~~~~
if想增加 添加联系人的功能,参照以下方法
public void addContacts(View v) {
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
// 1. 在raw_contacts表中添加一个记录
// 取raw_contacts表中contact_id的值
Cursor cursor = getContentResolver().query(uri, new String[]{"contact_id"}, null, null, "contact_id desc limit 1");
if(cursor != null && cursor.moveToFirst()) {
int contact_id = cursor.getInt(0);
contact_id ++;
cursor.close();
ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
getContentResolver().insert(uri, values);
// 2. 根据上面添加记录的id, 取data表中添加三条数据
// 存号码
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", "10086");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
// 存姓名
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", "中国移动");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
// 存邮件
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", "10086@kengni.com");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
}
}
标签:联系人
原文地址:http://7168554.blog.51cto.com/7158554/1619903