Android QuickContactBadge не отображается?
Я пытаюсь добавить QuickContactBadge
к Recyclerview
,
Подробности:
У меня есть список, где каждый элемент имеет фотографию контакта и текст.
Что я хочу:
Я хотел бы нажать на изображение и вызвать QuickContactBadge. но это не работа для меня.
Вот мой код:
public class CoViewHolder extends RecyclerView.ViewHolder {
QuickContactBadge imageView;
TextView title, phone;
ImageView call;
String pho, nam;
int position;
boolean concal;
String contactID;
private static final int CONTACT_PICKER_RESULT = 0;
public CoViewHolder(View v, int viewType) {
super(v);
title = (TextView) v.findViewById(R.id.name);
phone = (TextView) v.findViewById(R.id.no);
call = (ImageView) v.findViewById(R.id.ccbtn);
imageView = (QuickContactBadge) v.findViewById(R.id.pic);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent ii = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(ii, CONTACT_PICKER_RESULT);
}
});
}
private void startActivityForResult(Intent ii, int contactPickerResult) {
if(contactPickerResult==RESULT_OK)
switch (contactPickerResult) {
case CONTACT_PICKER_RESULT:
Uri contactUri = ii.getData();
FrameLayout frameLayout = (FrameLayout)activity.findViewById(R.id.badge_holder_large);
QuickContactBadge badge = new QuickContactBadge(activity);
badge.assignContactUri(contactUri);
badge.setMode(ContactsContract.QuickContact.MODE_LARGE);
frameLayout.addView(badge);
Cursor cursorID = activity.getContentResolver().query(contactUri,
new String[]{ContactsContract.Contacts._ID}, null, null, null);
if (cursorID.moveToNext()) {
contactID = cursorID.getString(cursorID.getColumnIndex(ContactsContract.Contacts._ID));
}
InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(activity.getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(contactID)));
BufferedInputStream buf =new BufferedInputStream(input);
Bitmap my_btmp = BitmapFactory.decodeStream(buf);
if(my_btmp != null)
badge.setImageBitmap(my_btmp);
else
badge.setImageResource(R.drawable.image);
}
}
}
0 ответов
Я никогда не понимал, как сделать assignContactUri()
работать правильно. Во всяком случае, так как вы работаете с ContactsContract.Contacts
Я думаю, вы можете связать значок контакта по телефону (например, когда он у вас есть), например:
badgeMedium.assignContactFromPhone("666-555-1234", true);
вместо:
badge.assignContactUri(contactUri);
Чтобы получить номер телефона контакта, вы можете посмотреть здесь, но у вас уже есть большая часть соответствующего кода. Также эта старая ссылка может помочь, так как QuickContactBadge
API не сильно изменился с тех пор.
Наконец, обратите внимание, что в соответствии с документами badge.setMode()
звонок больше не действует.