android 设置联系人头像代码,android如何取得本地通讯录的头像的原图的实现代码...

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

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的运行效果是:

d558e0dc14edc5e8517def795ff552a5.png

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

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值