我是Xamarin平台的初学者,正在尝试在Xamarin Forms中读取联系人。甚至尝试使用Xamarin.Mobile,但它会产生很多错误。找到了另外一个插件,即Xamarin.contacts https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Contacts,但没有给出相关示例。请帮忙提供一个使用Xamarin.contacts的相关示例,适用于所有3个平台。谢谢!
请记住,Xam.Plugin.Contacts目前处于测试版。
这是我的实现。请注意,尽管使用了类名,但这并不是真正的MVVM模式。我尽可能地简化了代码,以帮助阅读。
MainPage.xaml
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Contacts"
x:Class="Contacts.MainPage">
<ContentPage.BindingContext>
<local:MainViewModel x:Name="ViewModel" />
</ContentPage.BindingContext>
<ListView ItemsSource="{ Binding Contacts }">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{ Binding DisplayName }"
Detail="{ Binding Nickname }" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage>
MainViewModel.cs
public class MainViewModel
{
public ObservableCollection<Plugin.Contacts.Abstractions.Contact> Contacts { get; private set; }
public MainViewModel()
{
this.Contacts = new ObservableCollection<Plugin.Contacts.Abstractions.Contact>();
ReloadContacts();
}
public void ReloadContacts()
{
// Device may request user permission to get contacts access.
var hasPermission = CrossContacts.Current.RequestPermission()
.GetAwaiter()
.GetResult();
if (hasPermission)
{
this.Contacts.Clear();
List<Plugin.Contacts.Abstractions.Contact> contacts = null;
CrossContacts.Current.PreferContactAggregation = false;
if (CrossContacts.Current.Contacts == null)
{
return;
}
contacts = CrossContacts.Current.Contacts.ToList();
foreach (var contact in contacts)
{
this.Contacts.Add(contact);
}
}
}
}
此插件未在开发中且不受支持
:https://github.com/jamesmontemagno/ContactsPlugin 当然,您可以随时fork该repo并将其用作应用程序的基础...;-) - SushiHangover
List<Contact> contacts = null; CrossContacts.Current.PreferContactAggregation = false;//recommended contacts = CrossContacts.Current.Contacts .Where(c => !string.IsNullOrWhiteSpace(c.LastName) && c.Phones.Count > 0) .ToList();
不要忘记设置 Android 权限:android.permissions.READ_CONTACTS permission is required
。 - Nitro.de