Android獲取全部聯絡人資訊的例子
阿新 • • 發佈:2019-02-19
先定義一個顯示條目的xml佈局檔案
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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:layout_marginLeft="10dip" android:layout_marginTop="10dip" android:text="姓名:" android:textColor="#000000" android:textSize="20dp" /> <TextView android:id="@+id/tv_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginLeft="10dip" android:layout_marginRight="80dp" android:layout_marginTop="10dip" android:drawableLeft="@android:drawable/ic_menu_call" android:text="電話號" android:textColor="#000000" android:textSize="20dp" /> </RelativeLayout>
在來程式中實現以下邏輯
主要是運用內容提供者來操作資料庫,比較常用的程式碼,方便以後copypackage com.wzw.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.ContentResolver; import android.database.Cursor; import android.view.Menu; import android.widget.ListView; import android.widget.SimpleAdapter; public class SelectContactActivity extends Activity { private ListView list_select_contact; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_contact); list_select_contact=(ListView) findViewById(R.id.list_select_contact); List<Map<String, String>> data = getContactInfo(); list_select_contact.setAdapter(new SimpleAdapter(this, data , R.layout.contact_item, new String[] { "name", "phone" }, new int[] { R.id.tv_name, R.id.tv_phone})); } /** * 獲取所有聯絡人資訊 * @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); } } list.add(map); dataCursor.close(); } } cursor.close(); return list; } }