2016-06-22 4 views
2

저는 Xamarin 플랫폼 초보자입니다. & xamarin 양식으로 연락처를 읽으려고합니다. 심지어 Xamarin.Mobile을 사용해 보았지만 오류가 많습니다. 1 개의 플러그인 즉 Xamarin.contacts https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Contacts 을 발견했지만 관련 사례는 제공되지 않습니다. 모든 플랫폼에 대해 Xamarin.contacts를 사용하여 관련 예제를 사용하십시오. 미리 감사드립니다.Xamarin 양식의 연락처 읽기 방법

+1

안녕하십니까. StackOverflow에 오신 것을 환영합니다. Xamarin.Mobile은 어떤 종류의 오류가 있습니까? Xamarin에서 문제가되는 코드 몇 개를 보여 주실 수 있습니까? – Will

+0

github'에 예제가 있습니다. List contacts = null; CrossContacts.Current.PreferContactAggregation = false; // 권장 연락처 = CrossContacts.Current.Contacts .Where (c =>! string.IsNullOrWhiteSpace (c.LastName) && c.Phones.Count> 0) .ToList(); persmissions를 설정하는 것을 잊지 마라 Android :'android.permissions.READ_CONTACTS permission is required' –

+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 물론 여러분은 항상 repo를 포크하여 앱의 기본으로 사용할 수 있습니다. ;-) – SushiHangover