RedCorners.Components.DeviceContacts
Access device contacts on iOS and Android.
NuGet: https://www.nuget.org/packages/RedCorners.Components.DeviceContacts
GitHub: https://github.com/samafshari/RedCorners.Components.DeviceContacts
Setting Up / Permissions
iOS
iOS info.plist:
<key>NSContactsUsageDescription</key>
<string>This app requires access to contacts.</string>
Android
Android Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
...>
<application ...>...</application>
<uses-permission android:name="android.permission.READ_CONTACTS" />
</manifest>
MainActivity.cs
protected override void OnCreate(Bundle savedInstanceState)
{
...
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
DeviceContacts.Init(this);
LoadApplication(new App());
...
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
DeviceContacts.OnRequestPermissionsResult(requestCode, permissions, grantResults);
...
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Listing Contacts
var provider = new DeviceContacts();
var contacts = await contacts.GetAllAsync();
It’s strongly advised that you check for exceptions there, because GetAllAsync
throws exceptions if the permission to read contacts is not granted:
try
{
var provider = new DeviceContacts();
var contacts = await contacts.GetAllAsync();
}
catch (Exception ex)
{
App.Instance.DisplayAlert("Error", ex.ToString(), "OK");
}
Asking for permissions
When you call await contacts.GetAllAsync()
, the library automatically displays the permission request dialog.