Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何读取Xamarin表单中的联系人_C#_Android_Ios_Windows Phone_Xamarin.forms - Fatal编程技术网

C# 如何读取Xamarin表单中的联系人

C# 如何读取Xamarin表单中的联系人,c#,android,ios,windows-phone,xamarin.forms,C#,Android,Ios,Windows Phone,Xamarin.forms,我是Xamarin平台的初学者,试图阅读Xamarin表单中的联系人。甚至尝试使用Xamarin.Mobile,但它会产生很多错误。又找到1个插件,即Xamarin.contacts 但没有给出相关的例子。请为所有3个平台提供使用Xamarin.contacts的相关示例 提前感谢:)请记住Xam.Plugin.Contacts目前是alpha版本 这是我的实现。请注意,尽管有类名,但它不是真正的MVVM模式。为了提高可读性,我尽可能地简化了代码 MainPage.xaml <Conten

我是Xamarin平台的初学者,试图阅读Xamarin表单中的联系人。甚至尝试使用Xamarin.Mobile,但它会产生很多错误。又找到1个插件,即Xamarin.contacts 但没有给出相关的例子。请为所有3个平台提供使用Xamarin.contacts的相关示例
提前感谢:)

请记住Xam.Plugin.Contacts目前是alpha版本

这是我的实现。请注意,尽管有类名,但它不是真正的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);
            }
        }
    }
}
public类主视图模型
{
公共可观测收集联系人{get;private set;}
公共主视图模型()
{
this.Contacts=新的ObservableCollection();
重新加载触点();
}
public void重载联系人()
{
//设备可能会请求用户权限以获取联系人访问权限。
var hasPermission=CrossContacts.Current.RequestPermission()
.getwaiter()
.GetResult();
如果(已获得许可)
{
this.Contacts.Clear();
列出联系人=空;
CrossContacts.Current.PreferContactAggregation=false;
if(CrossContacts.Current.Contacts==null)
{
返回;
}
contacts=CrossContacts.Current.contacts.ToList();
foreach(触点中的var触点)
{
this.Contacts.Add(contact);
}
}
}
}

希望这能有所帮助。

大家好,欢迎来到StackOverflow。Xamarin.Mobile生产的是什么样的错误?您能否向我们展示一些您在Xamarin.Contacts方面遇到问题的代码?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\u CONTACTS权限是必需的
实际上我想显示列表中的所有联系人,但不知道在哪里添加此代码??我需要在PCL中添加它吗???@Will:Hi&谢谢你的回复。手机不支持ios,也不在屏幕上显示任何东西,android也是如此。关于Xamarin.联系人我不知道我到底需要在哪里添加给定的内容看看Xamarin.EssentialsFYI:Xam.Plugin.Contacts不再处于开发阶段
此插件未开发且不受支持
:当然,您可以随时将其作为应用程序的基础…;-)