android如何取得本地通讯录的头像的原图的实现代码
时间:2018-12-11
这篇文章主要介绍了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<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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Laravel框架表单验证操作实例分析
- Thinkphp5.0框架视图view的模板布局用法分析
- laravel5环境隐藏index.php后缀(apache)的方法
- php实现对文件压缩简单的方法
- laravel实现Auth认证,登录、注册后的页面回跳方法
- php 实现银联商务H5支付的示例代码
- Yii2.0框架behaviors方法使用实例分析
- laravel 去掉index.php伪静态的操作方法
- laravel 获取某个查询的查询SQL语句方法
- laravel dingo API返回自定义错误信息的实例
- Linux基于php-fpm模式的lamp搭建phpmyadmin的办法
- 基于laravel Request的所有方法详解
- 浅谈thinkphp的nginx配置,以及重写隐藏index.php入口文件方法
- php图片裁剪函数
- Laravel自定义 封装便捷返回Json数据格式的引用方法