Swift 讀取通訊錄資訊

2021-07-10 12:58:56 字數 2633 閱讀 5147

1,通訊錄訪問介紹

通訊錄是乙個資料庫,又叫位址簿、**簿,裡面儲存了聯絡人的相關資訊。要實現訪問通訊錄有如下兩種方式:

(1)addressbook.framework框架 : 沒有介面,通過**來獲取所有聯絡人資訊

(2)addressbookui.framework框架 : 通過系統提供的通訊錄互動介面來訪問

2,聯絡人記錄的屬性

在一條聯絡人記錄中,有很多屬性,而這些屬性又分為單值屬性和多值屬性。

(1)單值屬性是只有乙個值的屬性:

kabpersonlastnameproperty :姓

kabpersonfirstnameproperty :名

kabpersonmiddlenameproperty :中間名

kabpersonprefixproperty :字首

kabpersonsuffixproperty :字尾

kabpersonlastnamephoneticproperty :姓氏漢語拼音或音標

kabpersonfirstnamephoneticproperty :名字漢語拼音或音標

kabpersonnicknameproperty :暱稱

kabpersonorganizationproperty :公司(組織)

kabpersonjobtitleproperty :職位

kabpersondepartmentproperty :部門

kabpersonnoteproperty :備註

(2)多值屬性是包含多個值的集合型別:

kabpersonphoneproperty :**

kabpersonemailproperty :email

kabpersonaddressproperty :位址

kabpersonurlproperty : url屬性

kabpersondateproperty :紀念日

kabpersoninstantmessageproperty :獲取即時通訊(im)

kabpersonsocialprofileproperty :社交賬號

kabpersonrelatednamesproperty :親屬關係人

3,多值屬性標籤的本地名稱

在多值屬性中包含了label(標籤)、value(值)和id等部分,其中標籤和值都是可以重複的,而id是不能重複的。

對於標籤,我們可以使用abaddressbookcopylocalizedlabel()方法轉為本地標籤名(即能看得懂的標籤名,比如work、home)。要不然列印出來的是

!me>

! ,

!rk>

! 這樣的資料。

4,下面樣例使用**遍歷所有的聯絡人,並列印輸出相關屬性

import uikit

import addressbook

import addressbookui

class viewcontroller: uiviewcontroller

else })}

else

if (sysaddressbookstatus == abauthorizationstatus.denied || sysaddressbookstatus == abauthorizationstatus.restricted)

else

if (sysaddressbookstatus == abauthorizationstatus.authorized)

}//獲取並遍歷所有聯絡人記錄

func readrecords()}}

}//獲取email

let emailvalues:abmutablemultivalueref? = abrecordcopyvalue(contact, kabpersonemailproperty).takeretainedvalue()

if emailvalues != nil }}

//獲取位址

let addressvalues:abmutablemultivalueref? = abrecordcopyvalue(contact, kabpersonaddressproperty).takeretainedvalue()

if addressvalues != nil

}//獲取紀念日

let datevalues:abmutablemultivalueref? = abrecordcopyvalue(contact, kabpersondateproperty).takeretainedvalue()

if datevalues != nil

}//獲取即時通訊(im)

let imvalues:abmutablemultivalueref? = abrecordcopyvalue(contact, kabpersoninstantmessageproperty).takeretainedvalue()

if imvalues != nil }}

}}

override func didreceivememorywarning()

}

讀取通訊錄資訊

void readallpeoples 取得本地通訊錄名柄 abaddressbookref tmpaddressbook nil if uidevicecurrentdevice systemversionfloatvalue 6.0 tmpaddressbook abaddressbookcre...

ContentProvider讀取通訊錄和聯絡歷史

通過使用contentresolver讀取系統發布好的通訊錄相關的資料庫內容,並可以將裡面的資料取得,列表顯示。public class mainactivity extends activity null 隨意記錄乙個 一邊撥叫,這裡記錄迴圈中的最後乙個 string number c2.move...

Android讀取通訊錄資料

第一步,配置許可權 如果需要儲存,還需要儲存許可權 第二步,編寫聯絡人獲取工具類contractsutil public class contractsutil 根據uri查詢相應的contentprovider,cursor為獲取到的資料集 cursor cursor context.getcon...