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

根据电话号码获得联系人头像,是经常会碰到的问题。通过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()获得联系人的头像。

	// 根据号码获得联系人头像
	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);		
	}
}

  

你可能感兴趣的:(联系人)