第一步,配置許可權
如果需要儲存,還需要儲存許可權
第二步,編寫聯絡人獲取工具類contractsutil
public class contractsutil ;
//根據uri查詢相應的contentprovider,cursor為獲取到的資料集
cursor cursor = context.getcontentresolver().query(uri, projection, null, null, null);
string arr = new string[cursor.getcount()];
int i = 0;
if (cursor != null && cursor.movetofirst()) ;
//根據聯絡人的id獲取此人的**號碼
cursor phonescusor = context.getcontentresolver().query(
contactscontract.commondatakinds.phone.content_uri,
phoneprojection,
contactscontract.commondatakinds.phone.contact_id + "=" + id,
null,
null);
//因為每個聯絡人可能有多個**號碼,所以需要遍歷
if (phonescusor != null && phonescusor.movetofirst()) else
} while (phonescusor.movetonext());
}i++;
} catch (pinyinexception e)
} while (cursor.movetonext());}}
}
第三步:使用
可以提前新開乙個執行緒執行讀取聯絡人的操作,需要匹配的時候只需要進行資料庫查詢即可
第四步:匹配
先判斷外部輸入的資料call_number
boolean isnumber = stringutils.isnumeric(call_number);
如果是數字,則進行**號碼匹配
listcon = litepal.where("number like '%" + call_number + "%'").find(contracts.class);
如果是文字,則進行名字匹配
listcon = litepal.where("name like '%" + call_number+ "%'").find(contracts.class);
通訊錄的名字儲存中會有包含數字,字母和特殊字元的情況,可以把這些考慮進去進行進一步完善 Android讀取通訊錄聯絡人
cursor phonenumbercursor string phoneprojection phonenumbercursor contentresolver.query contactscontract.commondatakinds phone content uri,phoneprojec...
ContentProvider讀取通訊錄和聯絡歷史
通過使用contentresolver讀取系統發布好的通訊錄相關的資料庫內容,並可以將裡面的資料取得,列表顯示。public class mainactivity extends activity null 隨意記錄乙個 一邊撥叫,這裡記錄迴圈中的最後乙個 string number c2.move...
讀取通訊錄資訊
void readallpeoples 取得本地通訊錄名柄 abaddressbookref tmpaddressbook nil if uidevicecurrentdevice systemversionfloatvalue 6.0 tmpaddressbook abaddressbookcre...