1读取、添加联系人

来源:互联网 发布:android存储数据的方式 编辑:程序博客网 时间:2024/06/06 20:03

--------------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);

}


}

0 0
原创粉丝点击