android– 获取联系人图片Xamarin Forms

android– 获取联系人图片Xamarin Forms,第1张

概述我正在使用Xamarin Forms创建一个混合移动应用程序.我想显示所有电话簿联系人的列表,其中包含以下详细信息:>姓名>图片我在android清单中添加了“READ_CONTACTS”权限.以下是获取所有联系人的代码:var contactList = new List < MContacts > (); var Contact

我正在使用Xamarin Forms创建一个混合移动应用程序.我想显示所有电话簿联系人的列表,其中包含以下详细信息:

>姓名
>图片

我在android清单中添加了“READ_CONTACTS”权限.以下是获取所有联系人的代码:

var contactList = new List < MContacts > ();var ContactDetailURI = ContactsContract.Contacts.ContentUri;string[] ContactDetailProjection = { ContactsContract.Contacts.InterfaceConsts.ID,ContactsContract.Contacts.InterfaceConsts.displayname,ContactsContract.ContactsColumns.ContactLastUpdatedTimestamp,ContactsContract.Contacts.InterfaceConsts.PhotoID,ContactsContract.Contacts.InterfaceConsts.PhotoUri,ContactsContract.Contacts.InterfaceConsts.PhotofileID,ContactsContract.Contacts.InterfaceConsts.PhotothumbnailUri};var ContactDetailCursor = Forms.Context.ContentResolver.query( ContactDetailURI,ContactDetailProjection,null,null);if (ContactDetailCursor.MovetoFirst()) { do {    var contact = new MContacts();    contact.ID = ContactDetailCursor.GetLong(ContactDetailCursor.GetColumnIndex(ContactDetailProjection[0]));    contact.displayname = ContactDetailCursor.GetString(ContactDetailCursor.GetColumnIndex(ContactDetailProjection[1]));    contact.PhotoID = ContactDetailCursor.GetString(ContactDetailCursor.GetColumnIndex(ContactDetailProjection[6]));    contactList.Add(contact); } while (ContactDetailCursor.MovetoNext());}return contactList;

我有一个XAML页面,它将显示数据.我正在使用Image Cell.以下是XAML代码:

我收到了联系人姓名,但在图片领域我只得到这个:

content://com.androID.contacts/contacts/1/photo

我该怎么做才能显示图像?我在这里错过了什么?

附:我不想使用Xamarin.Mobile组件或任何其他组件.

最佳答案AndroID可以通过内容提供商和内容解析器访问其他应用程序中的文件.因此,您首先必须将该内容:// scheme URL转换为文件流.你可以这样做:

// convert uri to stream (AndroID code,ContentResolver is a property of the Activity class):var stream = ContentResolver.OpeninputStream(uri);// or when not in an activity (e.g. a service):var otherStream = AndroID.App.Application.Context.ContentResolver.OpeninputStream(uri);// eventually convert the stream to imagesource for consumption in Xamarin Forms:var imagesource = Xamarin.Forms.ImageSource.FromStream(() => stream);

有关更多信息,请参阅以下资源:

> https://developer.xamarin.com/guides/android/platform_features/intro_to_content_providers/
> https://developer.android.com/guide/topics/providers/content-providers.html 总结

以上是内存溢出为你收集整理的android – 获取联系人图片Xamarin Forms全部内容,希望文章能够帮你解决android – 获取联系人图片Xamarin Forms所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)