android contacts电话查询头像,android怎么取得本地通讯录的头像的原图

android怎么取得本地通讯录的头像的原图

发布时间:2021-02-10 19:25:16

来源:亿速云

阅读:103

作者:小新

这篇文章将为大家详细讲解有关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的运行效果是:

e6217d2a0370cd9053665af589885906.png

关于“android怎么取得本地通讯录的头像的原图”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值