Android通讯录(一)

 理解MimeType:根据查询条件的MimeType 决定Data表的data1~data15的值。

 对于MimeType的值有CommonDataKinds.xxxx.CONTENT_ITEM_TYPE。查询的得到的结果为

 CommonDataKinds.xxxx.xxx。

  
  
  
  
  1. public class ContactDataModel { 
  2.      
  3.     private Context mContext; 
  4.      
  5.     private ContentResolver mContentResolver; 
  6.      
  7.     public ContactDataModel(Context mContext) { 
  8.         this.mContext = mContext; 
  9.         mContentResolver=mContext.getContentResolver(); 
  10.     } 
  11.      
  12.     public List<HashMap<String,String>> getContactsByName(String mName){ 
  13.         mName=mName.trim(); 
  14.         List<HashMap<String,String>> list=new ArrayList<HashMap<String,String>>(); 
  15.         boolean ifQueryAll=false
  16.         Cursor cn =null
  17.         Cursor cu= null;//cu姓名游标,cn电话游标 
  18.         String selection=null;//查询条件 
  19.         ifQueryAll=mName.equals("")?true:false
  20.         //根据ifQuery判断查询条件 
  21.         if (ifQueryAll) { 
  22.             selection=Data.MIMETYPE+"='"+CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE+"'"
  23.         }else
  24.             selection=Data.MIMETYPE+"='"+CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE+"' AND "
  25.                                         CommonDataKinds.StructuredName.DISPLAY_NAME+"LIKE '%'"+mName+"%'"
  26.         } 
  27.         //根据姓名查询出通讯录ID与完整姓名。 
  28.         cu=mContentResolver.query(Contacts.CONTENT_URI,new String[]{Data.RAW_CONTACT_ID,StructuredName.DISPLAY_NAME}, 
  29. selection, nullnull); 
  30.         //根据通讯录ID查询电话号码的条件 
  31.         selection=Data.MIMETYPE+"='"+CommonDataKinds.Phone.CONTENT_ITEM_TYPE+"' AND "Data.RAW_CONTACT_ID+" =? "
  32.         //执行查询 
  33.         while (cu.moveToNext()) { 
  34.             String mContactId=String.valueOf(cu.getInt(0)); 
  35.             cn=mContentResolver.query(Contacts.CONTENT_URI, new String[]{CommonDataKinds.Phone.NUMBER},  
  36.                                                     selection, new String[]{mContactId}, null);  
  37.             while (cn.moveToNext()) { 
  38.                 HashMap<String,String> map=new HashMap<String, String>(); 
  39.                 map.put("display_name",cu.getString(1)); 
  40.                 map.put("phone_number",cn.getString(0)); 
  41.                 list.add(map); 
  42.             } 
  43.         } 
  44.         cu.close(); 
  45.         cn.close();  
  46.         return list; 
  47.     } 

 

你可能感兴趣的:(android)