Android读取选择联系人的模版代码实现

1、创建SelectContactActivity类,在AndroidManifest.xml添加类import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.database.Cursor;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class SelectContactActivity extends Activity {private ListView lv_select_contact;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_select_contact);lv_select_contact = (ListView) findViewById(R.id.lv_select_contact);final List<Map<String,String>> data = getContactInfo();lv_select_contact.setAdapter(new SimpleAdapter(this, data, R.layout.contact_item_view,new String[]{"name","phone"}, new int[]{R.id.tv_name,R.id.tv_phone}));lv_select_contact.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position,long id) {String phone = data.get(position).get("phone");Intent data = new Intent();data.putExtra("phone", phone);setResult(0, data);//关闭掉当前的页面finish();}});}/** * 读取手机里面的联系人 * @return */private List<Map<String, String>> getContactInfo() {List<Map<String, String>> list = new ArrayList<Map<String,String>>();//得到一个内容解析器ContentResolver resolver = getContentResolver();//raw_contact uriUri 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);}}list.add(map);dataCursor.close();}}cursor.close();return list;}}2、读取联系人需要获得权限

添加权限:<uses-permission android:name="android.permission.READ_CONTACTS"/>

3、前面java需要引入相关layout,模版如下注意姓名号码id:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=""android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:background="#8866ff00"android:gravity="center"android:textColor="#000000"android:textSize="20sp"android:id="@+id/textView1"android:layout_width="fill_parent"android:layout_height="55dip"android:text="选择联系人"/><ListViewandroid:verticalSpacing="10dip"android:layout_marginTop="15dip"android:numColumns="3"android:id="@+id/lv_select_contact"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>4、实现选择联系人的点击事件

xml的Button中android:onClick="selectContact" ,注意返回startActivityForresult()方法

* 选择联系人的点击事件 */public void selectContact(View view){Intent intent = new Intent(this,SelectContactActivity.class);startActivityForResult(intent, 0);}5、然后将点击的联系人投射到号码输入框@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if(data == null){return ;}//et_setup3_phone是输入框的idString phone = data.getStringExtra("phone").replace("-", "");et_setup3_phone.setText(phone);}6、最后说下注意点

在获取完号码后,,整个流程就结束了,在再次引用号码时最好toString().trim()操作,然后如果有必要可以判空和保存,保存要注意commit()。

家门前的那条小路,到底通向了什么样的远方呢?

Android读取选择联系人的模版代码实现

相关文章:

你感兴趣的文章:

标签云: