我正在使用Xamarin Forms创建混合移动应用程序。我想显示所有电话簿联系人的列表,并列出以下详细信息:
- 名称
- 图像
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,
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页面,将用于显示数据。我正在使用图像单元格。以下是XAML代码:
<ContentPage.Content>
<ListView x:Name="ContactList">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell
Text="{Binding DisplayName}"
ImageSource="{Binding PhotoId}">
</ImageCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</ContentPage.Content>
我可以获取联系人姓名,但在图像字段中,我只得到了这个:
content://com.android.contacts/contacts/1/photo
我该怎么做才能显示图片?我漏掉了什么?
附注:我不想使用Xamarin.Mobile组件或其他任何组件。
Activity
类的ContentResolver
属性吗?还是从其他位置获取数据?如果你在Activity
之外调用它,我刚刚更新了这个答案并提供了更多信息。在这种情况下,你必须通过应用程序上下文来访问它。 - Tim KlingeleersContact
类上的PhotoId
属性可能是一个string
而不是ImageSource
类型。 - Tim Klingeleers