android如何取得本地通讯录的头像的原图的实现代码
程序员文章站
2023-02-07 15:28:05
本文介绍了android如何取得本地通讯录的头像的原图的实现代码,分享给大家,也给自己留个笔记
如果想通讯录进入详情页,那么最重要的参数就是contactid,这个是联系...
本文介绍了android如何取得本地通讯录的头像的原图的实现代码,分享给大家,也给自己留个笔记
如果想通讯录进入详情页,那么最重要的参数就是contactid,这个是联系人的唯一标识
getlistview().setonitemclicklistener(new adapterview.onitemclicklistener() { @override public void onitemclick(adapterview<?> parent, view view, int position, long id) { try { cursor cursor = (cursor) getlistadapter().getitem(position); if (cursor == null) { return; } int contactid = cursor.getint(personal.id_column_index); intent intent = new intent(); intent.setclass(contactslist.this, contactdetail.class); intent.putextra("contactid",contactid); startactivity(intent); }catch(exception ex) { ex.printstacktrace(); } } });
本地通讯录的原图获取方法是:
public class contactdetail extends activity { private imageview contact_photo; public static void startactivity(context context) { intent intent = new intent(); intent.setclass(context,contactdetail.class); context.startactivity(intent); } @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.contact_detail); int contactid = getintent().getintextra("contactid", 0); contact_photo = (imageview)findviewbyid(r.id.contact_photo); loadtask task = new loadtask(contactid); task.execute(); } private class loadtask extends asynctask<void, void, bitmap> { public loadtask(int id) { contactid = id; } private int contactid; @override protected bitmap doinbackground(void... params) { inputstream inputstream = opendisplayphoto(contactid); bitmapfactory.options opt = new bitmapfactory.options(); opt.insamplesize = 1; bitmap bitmap = bitmapfactory.decodestream(inputstream, null, opt); return bitmap; } @override protected void onpostexecute(bitmap result) { if(result != null) { contact_photo.setimagebitmap(result); } super.onpostexecute(result); } } /** * 这个是取到清晰图的inputstream的代码 * @param contactid * @return */ public inputstream opendisplayphoto(long contactid) { uri contacturi = contenturis.withappendedid(contactscontract.contacts.content_uri, contactid); uri displayphotouri = uri.withappendedpath(contacturi, contactscontract.contacts.photo.display_photo); try { assetfiledescriptor fd = this.getcontentresolver().openassetfiledescriptor(displayphotouri, "r"); return fd.createinputstream(); } catch (ioexception e) { e.printstacktrace(); return null; } } }
activity的运行效果是:
代码在https://github.com/nickgao1986/stepsport
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 引用文章链接代码复制自动加链接功能