連絡人
本文說明如何使用 .NET 多平臺應用程式 UI (.NET MAUI) IContacts 介面來選取聯繫人,並閱讀其相關信息。
介面的預設實作 IContacts
可透過 Default 屬性取得。 IContacts
介面和Contacts
類別都包含在 命名空間中Microsoft.Maui.ApplicationModel.Communication
。
重要
Windows 不支持選擇聯繫人。
由於命名空間衝突,當 Contacts
以 iOS 或 macOS Microsoft.Maui.ApplicationModel.Communication.Contacts
為目標時,類型必須完整:。 新的項目會自動以這些平台為目標,以及 Android 和 Windows。
若要撰寫將針對 iOS 和 macOS 編譯的程式代碼,請完整限定 Contacts
類型。 或者,提供 using
指示詞來對應 Communication
命名空間:
using Communication = Microsoft.Maui.ApplicationModel.Communication;
// Code that uses the namespace:
var contact = await Communication.Contacts.Default.PickContactAsync();
開始使用
若要存取 聯繫人 功能,需要下列平臺特定設定。
需要 ReadContacts
權限,而且必須在 Android 專案中設定。 能以下列方式新增:
新增元件型權限:
開啟 Platform/Android/MainApplication.cs 檔案,並在 指示詞後面
using
新增下列元件屬性:[assembly: UsesPermission(Android.Manifest.Permission.ReadContacts)]
- 或 -
更新 Android 指令清單:
開啟 [平臺/Android/AndroidManifest.xml] 檔案,並在
manifest
節點中新增下列內容:<uses-permission android:name="android.permission.READ_CONTACTS" />
- 或 -
更新指令清單編輯器中的 Android 指令清單:
在 Visual Studio 中,按兩下 [平臺/Android/AndroidManifest.xml ] 檔案,以開啟 Android 指令清單編輯器。 然後,在 [必要許可權] 底下,檢查READ_CONTACTS許可權。 這將會自動更新 AndroidManifest.xml 檔案。
挑選聯繫人
您可以呼叫 PickContactAsync() 方法來要求使用者挑選聯繫人。 聯繫人對話框會出現在裝置上,允許使用者選取聯繫人。 如果使用者未選取聯絡人, null
則會傳回 。
private async void SelectContactButton_Clicked(object sender, EventArgs e)
{
try
{
var contact = await Contacts.Default.PickContactAsync();
if (contact == null)
return;
string id = contact.Id;
string namePrefix = contact.NamePrefix;
string givenName = contact.GivenName;
string middleName = contact.MiddleName;
string familyName = contact.FamilyName;
string nameSuffix = contact.NameSuffix;
string displayName = contact.DisplayName;
List<ContactPhone> phones = contact.Phones; // List of phone numbers
List<ContactEmail> emails = contact.Emails; // List of email addresses
}
catch (Exception ex)
{
// Most likely permission denied
}
}
取得所有聯繫人
方法 GetAllAsync 會傳回聯繫人的集合。
public async IAsyncEnumerable<string> GetContactNames()
{
var contacts = await Contacts.Default.GetAllAsync();
// No contacts
if (contacts == null)
yield break;
foreach (var contact in contacts)
yield return contact.DisplayName;
}
平台差異
本節說明與聯繫人 API 的平臺特定差異。
cancellationToken
不支援 方法中的 GetAllAsync 參數。