2016-06-22 3 views
2

Я новичок в платформе Xamarin, & пытается читать контакты в формах xamarin. Даже пробовал использовать Xamarin.Mobile, но он дает много ошибок. Найдено еще 1 плагин, то есть Xamarin.contacts https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Contacts , но не приводится соответствующий пример. Пожалуйста, помогите с соответствующим примером, используя Xamarin.contacts для всех 3 платформ Заранее спасибо :)Как читать контакты в формах Xamarin

+1

Привет, и добро пожаловать в StackOverflow. Какая ошибка - производство Xamarin.Mobile? Не могли бы вы показать нам некоторые из кода, с которым вы столкнулись с Xamarin.Contacts? – Will

+0

Есть пример в github 'List contacts = null; CrossContacts.Current.PreferContactAggregation = false; // Recommended contacts = CrossContacts.Current.Contacts .Where (c =>! String.IsNullOrWhiteSpace (c.LastName) && c.Phones.Count> 0) .ToList(); ' Не забудьте установить persmissions Android: 'android.permissions.READ_CONTACTS требуется разрешение' –

+0

Фактически я хотел отобразить все контакты в списке и не понимать, где добавить этот код ?? мне нужно добавить его в PCL ?? – Rajeshree

ответ

2

Просто имейте в виду 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); 
      } 
     } 
    } 
} 

Надежда это помогает.

+0

FYI: Xam.Plugin.Contacts больше не разрабатывается .... 'ЭТО ПЛЮГИН НЕ ПОДЛЕЖИТ РАЗВИТИЮ И НЕ ПОДДЕРЖИВАЕТ': https://github.com/jamesmontemagno/ContactsPlugin Конечно, вы всегда можете разветвить репо и использовать его в качестве базы в своих приложениях ... ;-) – SushiHangover

Смежные вопросы