根据电话号码获得联系人头像

xiaoxiao2021-02-28  76

根据电话号码获得联系人头像,是经常会碰到的问题。通过ContentProvider,可以访问Android中的联系人等数据。常用的Uri有:

联系人信息Uri:content://com.android.contacts/contacts 联系人电话Uri:content://com.android.contacts/data/phones 联系人邮件Uri:content://com.android.contacts/data/emails

并且提供了根据电话号码获取data表数据的功能,方法为:data/phones/filter/号码,返回一个数据集。再通过数据集获得该联系人的contact_id,根据contact_id打开头像图片的InputStream,最后用BitmapFactory.decodeStream()获得联系人的头像。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 // 根据号码获得联系人头像 public  static  void  get_people_image(String x_number){          // 获得Uri      Uri uriNumber2Contacts = Uri.parse( "content://com.android.contacts/"              +  "data/phones/filter/"  + x_number);      // 查询Uri,返回数据集      Cursor cursorCantacts = context.getContentResolver().query(              uriNumber2Contacts,              null ,              null ,                                     null ,              null );      // 如果该联系人存在      if  (cursorCantacts.getCount() >  0 ) {          // 移动到第一条数据                cursorCantacts.moveToFirst();                 // 获得该联系人的contact_id                Long contactID = cursorCantacts.getLong(cursorCantacts                       .getColumnIndex( "contact_id" ));                 // 获得contact_id的Uri                Uri uri = ContentUris.withAppendedId(                       ContactsContract.Contacts.CONTENT_URI, contactID);                 // 打开头像图片的InputStream                InputStream input = ContactsContract.Contacts                       .openContactPhotoInputStream(context.getContentResolver(), uri);                 // 从InputStream获得bitmap                bmp_head = BitmapFactory.decodeStream(input);     }<br>}

  

转载请注明原文地址: https://www.6miu.com/read-63297.html

最新回复(0)