4
Xamarinフォームを使用してハイブリッドモバイルアプリケーションを作成しています。私はAndroidのマニフェストに許可「READ_CONTACTS」を追加した連絡先イメージを取得するXamarinフォーム
- 名前
- 画像
:私は、以下の詳細のすべての電話帳の連絡先のリストを表示したいです。以下はすべての連絡先を取得するためのコードです:
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
私は画像を表示するために何をすべき?私はここで何が欠けていますか?
P.S.私はXamarin.Mobileコンポーネントまたは他のコンポーネントを使用したくありません。
がエラーを取得: 「オブジェクト参照をするために必要です非静的フィールドメソッドまたはプロパティにアクセスContentResolver.OpenInputStream " 私のURIは: var uri = Android.Net.Uri.Parse(新しいSystem.Uri(ContactDetailCursor.GetString(ContactDetailCursor.GetColumnIndex(ContactDetailProjection [4])))。ToString()); –
Androidの 'Activity'クラスの' ContentResolver'プロパティを使用していますか?または他の場所から?私はちょうどあなたが 'Activity'の外でこれを呼び出す場合には、アプリケーションのコンテキストを調べなければならない場合に、より多くの情報で答えを更新しました。 –
ええ、 "otherStream"を使って問題を解決しました:)しかし最後の質問は、今私が "contact.PhotoId = imagesource;"と書きました。 "Xamarin.Forms.ImageSource型を暗黙的に文字列に変換することはできません" –