編輯:關於android開發
獲取ContentResolver內容解析器對象,通過getContentResolver()方法
調用ContentResolver對象的query()方法,得到raw_contacts表裡面的數據,得到Cursor對象
參數:Uri對象,字段String數組
獲取Uri對象,通過Uri.parse(“content://com.android.contacts/raw_contacts”)方法,
while循環Cursor對象,條件是Cursor對象moveToNext()方法為真
調用Cursor對象的getString()方法,參數是索引
判斷不為null,查詢另一張表
調用ContentResolver對象的query()方法,得到data表裡面的數據,得到Cursor對象
參數:Uri對象,字段String[]數組(data1,mimetype),條件String,條件值String[]數組(contact_id)
Uri對象是Uri.parse(“content://com.android.contacts/data”)
循環和上面一樣
姓名對應的類型是vnd.android.cursor.item/name
電話對應的類型是vnd.android.cursor.item/phone_v2
需要權限,android.permisssion.READ_CONTACTS
調用ListView對象的setAdapter()方法,分配數據到視圖,參數是Adapter對象
通過new SimpleAdapter()來獲得Adapter對象
參數:上下文,數據集合,布局資源,字段String[]數組,控件int[] id數組
package com.qingguow.mobilesafe.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.ContentResolver; import android.content.Context; import android.database.Cursor; import android.net.Uri; /** * 讀取手機聯系人 * @author taoshihan * */ public class PhoneContactsUtil { public static List<Map<String,String>> getContacts(Context context){ ContentResolver resolver=context.getContentResolver(); Uri uri=Uri.parse("content://com.android.contacts/raw_contacts"); Uri dataUri=Uri.parse("content://com.android.contacts/data"); List<Map<String,String>> contacts=new ArrayList<Map<String,String>>(); //循環聯系人表 Cursor cursor=resolver.query(uri, new String[]{"contact_id"}, null, null, null); while(cursor.moveToNext()){ String id=cursor.getString(cursor.getColumnIndex("contact_id")); if(id!=null){ Map<String,String> contact=new HashMap<String,String>(); //查找數據表 Cursor dataCursor=resolver.query(dataUri, new String[]{"data1","mimetype"},"raw_contact_id=?", new String[]{id}, null); while(dataCursor.moveToNext()){ String data1=dataCursor.getString(dataCursor.getColumnIndex("data1")); String mimetype=dataCursor.getString(dataCursor.getColumnIndex("mimetype")); System.out.println("data1:"+data1+",mimetype:"+mimetype); if(mimetype.equals("vnd.android.cursor.item/name")){ contact.put("name", data1); }else if(mimetype.equals("vnd.android.cursor.item/phone_v2")){ contact.put("phone", data1); } } contacts.add(contact); dataCursor.close(); } } cursor.close(); return contacts; } }
上一節所講內容為Android菜單的知識,本節來講另一種界面元素,對
(轉)Android SlidingTabLayout定制分割線和指示條顏色,android分割線本文轉載與:http://blog.csdn.net/zhangphil
MSM8909+Android5.1.1鍵盤驅動---sn7326介紹 1.Sn7326概述 SN7326是一款帶智能自掃描的鍵盤擴展芯片,支持多達8*8個按鍵。按下
Android App監聽軟鍵盤按鍵的三種方式與改變軟鍵盤右下角確定鍵樣式,androidappactionNone : 回車鍵,按下後光標到下一行actionGo :