Permissions
ContactPermission
Section titled “ContactPermission”The library provides a ContactPermission class that subclasses Permissions.BasePlatformPermission and wraps both read and write contact permissions into a single request.
Extension Methods
Section titled “Extension Methods”The easiest way to work with permissions is through the extension methods on IContactStore:
// Request permissions (triggers OS prompt if needed)var status = await contactStore.RequestPermissionsAsync();
// Check current status without promptingvar status = await contactStore.CheckPermissionStatusAsync();Direct Usage
Section titled “Direct Usage”You can also use the permission class directly with MAUI’s Permissions API:
var status = await Permissions.RequestAsync<ContactPermission>();var check = await Permissions.CheckStatusAsync<ContactPermission>();Permission Results
Section titled “Permission Results”Android
Section titled “Android”On Android, ContactPermission requests both READ_CONTACTS and WRITE_CONTACTS permissions. The result reflects the combined state:
| Status | Meaning |
|---|---|
Granted | Both read and write access granted |
Limited | Only read or only write granted (not both) |
Denied | Neither read nor write granted |
On iOS, contacts access is all-or-nothing:
| Status | Meaning |
|---|---|
Granted | Contacts access authorized |
Denied | Contacts access denied |
Restricted | Contacts access restricted (e.g. parental controls) |
Typical Usage Pattern
Section titled “Typical Usage Pattern”public class ContactListViewModel(IContactStore contactStore, IDialogs dialogs){ public async Task LoadContacts() { var status = await contactStore.RequestPermissionsAsync(); if (status != PermissionStatus.Granted) { await dialogs.Alert("Permission Required", "Contact access is needed to continue."); return; }
var contacts = await contactStore.GetAll(); // display contacts... }}iOS Notes & Relations Entitlement
Section titled “iOS Notes & Relations Entitlement”Reading and writing the Note and Relationships properties on iOS requires the com.apple.developer.contacts.notes entitlement. The library automatically detects whether this entitlement is present at runtime.
- If absent:
NotereturnsnullandRelationshipsis empty — no errors - If present: full read/write access to notes and relations
To enable, add to Entitlements.plist:
<key>com.apple.developer.contacts.notes</key><true/>