当前位置: 移动技术网 > IT编程>移动开发>Android > android如何取得本地通讯录的头像的原图的实现代码

android如何取得本地通讯录的头像的原图的实现代码

2019年07月31日  | 移动技术网IT编程  | 我要评论

安徽团购,n0597,腐乘以无限大

本文介绍了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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网