連絡先
この記事では、.NET Multi-Platform App UI (.NET MAUI) の IContacts インターフェイスを使用して連絡先を選択し、それに関する情報を読み取る方法について説明します。
IContacts
インターフェイスの既定の実装は、Default プロパティを通じて使用できます。 IContacts
インターフェイスと Contacts
クラスは、どちらも Microsoft.Maui.ApplicationModel.Communication
名前空間に含まれています。
重要
Windows では、連絡先の選択はサポートされていません。
名前空間の競合のため、iOS または macOS をターゲットにする場合は、Contacts
型を 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();
作業の開始
Contacts の機能にアクセスするには、次のプラットフォーム固有のセットアップが必要です。
ReadContacts
アクセス許可が必要です。Android プロジェクト内で構成する必要があります。 これは次の方法で追加できます。
アセンブリベースのアクセス許可を追加します。
Platforms/Android/MainApplication.cs ファイルを開き、
using
ディレクティブの後に次のアセンブリ属性を追加します。[assembly: UsesPermission(Android.Manifest.Permission.ReadContacts)]
または
Android マニフェストを更新します。
Platforms/Android/AndroidManifest.xml ファイルを開き、
manifest
ノードに次を追加します。<uses-permission android:name="android.permission.READ_CONTACTS" />
または
マニフェスト エディターで Android マニフェストを更新します。
Visual Studio で、Platforms/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 との違いについて説明します。
- GetAllAsync メソッドの
cancellationToken
パラメーターはサポートされていません。
.NET MAUI