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

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

(0)

相关推荐

  • Android编程操作手机通讯录的方法示例

    本文实例讲述了Android编程操作手机通讯录的方法.分享给大家供大家参考,具体如下: 手机通讯录的操作是经常被用到的,例如添加联系人,删除联系人或者取得联系人信息.类似的操作还有收藏夹的操作,下面就针对通讯录的操作来做个小例子.同样的这次也会使用到内容提供者的知识. 1. 要操作通信录就要得到授权,也就是读或者写通讯录的权力.这里也需要使用Junit <?xml version="1.0" encoding="utf-8"?> <manifest

  • android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)

    前言: 仿微信通讯录搜索功能,通过汉字或拼音首字母找到匹配的联系人并显示匹配的位置 一:先看效果图 字母索引 搜索匹配 二:功能分析 1:汉字转拼音 通讯录汉字转拼音(首个字符当考虑姓氏多音字), 现在转换拼音常见的有pinyin4j和tinypinyin, pinyin4j的功能强大,包含声调多音字,tinypinyin执行快占用内存少, 如果只是简单匹配通讯录,建议使用tinypinyin,用法也很简单这里不详细介绍 拼音类 public class CNPinyin <T extends

  • Android Loader的使用以及手机通讯录的获取方法

    Android的主线程中执行长时间操作,导致界面无响应,会引起ANR.如果需要执行较长时间的操作,一般会在另一个线程处理,然后将数据转交给主线程进行显示,Android本身为我们提供了一些机制处理这种情况,今天就来看看Loader.Loader主要用来在Activity和Fragment中异步加载数据,使用也非常简单. Loader的初始化非常简单,Activity提供了获取LoaderManager的接口,之后调用LoaderManager的initLoader即可.initLoader接受三

  • Android个人手机通讯录开发详解

    一.Android 个人手机通讯录开发 数据存储:SQLite 数据库 开发工具:Android Studio 二.Phone Module 简介 1. 界面展示 2. 文件结构简单分析 三.个人手机通讯录代码实现 1. 清单文件 (AndroidManifest.xml) <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.andr

  • Android读取手机通讯录联系人到自己项目

    本文实例为大家分享了Android读取手机通讯录联系人到项目的具体代码,供大家参考,具体内容如下 一.主界面代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientat

  • Android开发之自定义view实现通讯录列表A~Z字母提示效果【附demo源码下载】

    本文实例讲述了Android开发之自定义view实现通讯录列表A~Z字母提示效果.分享给大家供大家参考,具体如下: 开发工具:eclipse 运行环境:htc G9 android2.3.3 话不多说,先看效果图 其实左右边的A~Z是一个自定义的View,它直接覆盖在ListView上. MyLetterListView: public class MyLetterListView extends View { OnTouchingLetterChangedListener onTouching

  • Android仿手机通讯录地址选择功能

    感觉比较好的一个地址选择设计,而且发现有的App中也用到了.还是先上效果图 思路: 1.效果是仿照网上大神实现的类似通讯录样式做的: 2.右边a-z是自定义的一个bar,设置了点击监听事件,以及对话框弹出 3.关键是adapter,判断了字母显示和隐藏 4.用到汉字转拼音.按首字母排序等工具类 5.3个activity的跳转是用回调来实现,每个activity都实现了回调,这样就有了从区activity直接跳转到首页的效果 6.数据是调用的我本地的接口实现的,如果大家没有数据我可以想办法给你们提

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

    本文介绍了android如何取得本地通讯录的头像的原图的实现代码,分享给大家,也给自己留个笔记 如果想通讯录进入详情页,那么最重要的参数就是contactId,这个是联系人的唯一标识 getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position

  • Android实现从本地图库/相机拍照后裁剪图片并设置头像

    玩qq或者是微信的盆友都知道,这些聊天工具里都要设置头像,一般情况下大家的解决办法是从本地图库选择图片或是从相机拍照,然后根据自己的喜爱截取图片.上述过程已经实现好了,最后一步我加上了把截取好的图片在保存到本地的操作,来保存头像.为了大家需要,下面我们小编把完整的代码贴出来供大家参考. 先给大家展示效果图: 代码部分: 布局代码(其实就是两个按钮和一个ImageView来显示头像) <LinearLayout xmlns:android="http://schemas.android.co

  • Android添加联系人到通讯录的方法

    字段 联系人名字 名字不知道为什么,值设置了之后传过去没有,于是自己通过 Intent 最后又单独传了一次 // 联系人名字 ContentValues row1 = new ContentValues();String name = lastName + middleName + firstName;row1.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_I

  • 使用adb命令向Android模拟器中导入通讯录联系人的方法

    本文实例讲述了使用adb命令向Android模拟器中导入通讯录联系人的方法.分享给大家供大家参考.具体实现方法如下: 使用adb提供的命令, 可以非常方便地从PC中将通讯录导入android模拟器中. 首先要先准备好固定格式的contacts.vcf文件, 该文件即android中的通讯录存储文件. 格式如下: 复制代码 代码如下: BEGIN:VCARD  VERSION:3.0  N:15200000000;;;;  TEL;TYPE=cell:15200000000  END:VCARD 

  • Android仿微信QQ设置图形头像裁剪功能

    最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流. 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue)! 图片裁剪实现方式有两种,一种是利用系统自带的裁剪工具,一种是使用开源工具Cropper.本节就为大家带来如何使用系统自带的裁剪工具进行图片裁剪~ 还是先来个简单的运行图. 额,简单说下,我待会会把代码写成小demo分享给大家,在文章末尾会附上github链接,需要的可以自行下载~ 下面来简单分

  • Android跳转到通讯录获取用户名称和手机号码的实现思路

    效果图如下所示: 先给大家说下实现android 跳转到通讯录的实现思路: 1.点击跳转到通讯录界面 2.获取通讯录姓名和手机号码 3.回调显示姓名和手机号码 1首先是跳转到通讯录界面 Uri uri = Uri.parse("content://contacts/people"); Intent intent = new Intent(Intent.ACTION_PICK, uri); startActivityForResult(intent, 0); 通过设置通讯录url跳转,可

  • Android实现搜索本地音乐的方法

    本文实例为大家分享了Android实现搜索本地音乐展示的具体代码,供大家参考,具体内容如下 首先是扫描本地所有的音频文件,然后全部装进集合当中,接下来就是用ListView展示在屏幕上,大概就是这几个步骤了,接下来细讲 创建一个容器 进行过数据解析的朋友都应该知道JavaBean吧,用来装载解析出来的数据,我们这里同样也要创建一个JavaBean,用来装载扫描到的音频文件,具体的代码是: /** * Created by user on 2016/6/24. * 放置音乐 */ public c

  • Android自定义View之绘制圆形头像功能

    前言 做APP应用开发的时候,用户头像肯定是必不可少的,但是90%以上的需求头像都是圆形的.那么,如何通过自定义View的方式实现圆形头像呢,那么,本片博文会告诉你不仅仅是实现过程.一定会有意想不到的收获哦! 最终效果 国际惯例,我们先来看最终实现的效果图 自定义RoundImageView继承自ImageView public class RoundImageView extends ImageView { public RoundImageView(Context context) { su

  • Android WebView调用本地相册的方法

    本文实例为大家分享了Android WebView调用本地相册的具体实现方法,供大家参考,具体内容如下 首先要知道android本身的WebView是并不支持调用手机文件并上传的,其次WebView的内核在android每次更新的时候都是不太一样的,也是够坑爹的:不过需求又不能改,H5需要调用系统相册,还好最后还是找到方法解决了,就是要重写里面的一个方法,不过这种情况也是在5.0之前有效,5.0之后就需要重写另外的一个方法,先将这些方法一个个的列出 注意在这里我们需要重写的方法是在这个WebCh

随机推荐