4
Xamarin Forms를 사용하여 하이브리드 모바일 응용 프로그램을 만들고 있습니다.연락처 이미지 받기 Xamarin Forms
- 이름
- 이미지 나 안드로이드 매니페스트에 권한 "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,
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 페이지가 : 아래 모든 연락처를 얻을 수있는 코드입니다. 이미지 셀을 사용하고 있습니다.
<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
내가 이미지를 표시하기 위해 무엇을해야 하는가를 아래 XAML 코드는? 내가 여기서 무엇을 놓치고 있니?
P. Xamarin을 사용하고 싶지 않습니다. 모바일 구성 요소 또는 기타 구성 요소.
오류를 가져 오기 : "객체 참조가 요구된다 비 정적 필드 메서드 또는 속성에 액세스 ContentResolver.OpenInputStream " 내 URI는 다음과 같습니다. var uri = Android.Net.Uri.Parse (새 System.Uri (ContactDetailCursor.GetString (ContactDetailProjection [4]))). ToString()); –
Android'Activity' 클래스의'ContentResolver' 속성을 사용하고 있습니까? 아니면 다른 위치에서? 나는 당신이'Activity'의 외부에서 이것을 호출 할 경우를 대비하여 더 많은 정보로 응답을 업데이트했습니다,이 경우 당신은 응용 프로그램의'Context'를 거쳐야 만합니다. –
예, "otherStream"을 사용하여 문제가 해결되었습니다. :)하지만 마지막 질문은 이제 "contact.PhotoId = imagesource;"라고 썼습니다. "Xamarin.Forms.ImageSource 타입을 암시 적으로 문자열로 변환 할 수 없습니다"라는 오류가 발생합니다. –