Android讀取通訊錄資料

2021-09-14 06:26:50 字數 1527 閱讀 3297

第一步,配置許可權

如果需要儲存,還需要儲存許可權

第二步,編寫聯絡人獲取工具類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...