- 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;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // TODO Auto-generated method stub
- super.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() {
- @Override
- public 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 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);
- }
- }
- list.add(map);
- dataCursor.close();
- }
- }
- cursor.close();
- return list;
- }
- }
添加权限:<uses-permission android:name="android.permission.READ_CONTACTS"/>
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <TextView
- android: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="选择联系人"/>
- <ListView
- android: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>
xml的Button中 android:onClick="selectContact" ,注意返回startActivityForresult()方法
- * 选择联系人的点击事件
- */
- public void selectContact(View view){
- Intent intent = new Intent(this,SelectContactActivity.class);
- startActivityForResult(intent, 0);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- super.onActivityResult(requestCode, resultCode, data);
- if(data == null){
- return ;
- }
- //et_setup3_phone是输入框的id
- String phone = data.getStringExtra("phone").replace("-", "");
- et_setup3_phone.setText(phone);
- }
在获取完号码后,整个流程就结束了,在再次引用号码时最好toString().trim()操作,然后如果有必要可以判空和保存,保存要注意commit()。
来源: http://www.phpxs.com/code/1002086/