Android 获取通讯录联系人信息(中)

Android 获取通讯录联系人信息完整的代码

import java.io.InputStream;  

import java.util.ArrayList;  

import android.app.ListActivity;  

import android.content.ContentResolver;  

import android.content.ContentUris;  

import android.content.Context;  

import android.content.Intent;  

import android.database.Cursor;  

import android.graphics.Bitmap;  

import android.graphics.BitmapFactory;  

import android.net.Uri;  

import android.os.Bundle;  

import android.provider.ContactsContract;  

import android.provider.ContactsContract.CommonDataKinds.Phone;  

import android.provider.ContactsContract.CommonDataKinds.Photo;  

import android.text.TextUtils;  

import android.view.LayoutInflater;  

import android.view.View;  

import android.view.ViewGroup;  

import android.widget.AdapterView;  

import android.widget.BaseAdapter;  

import android.widget.ImageView;  

import android.widget.ListView;  

import android.widget.TextView;  

import android.widget.AdapterView.OnItemClickListener;  

public class ContactsActivity extends ListActivity {  

    Context mContext = null;  

    /**获取库Phon表字段**/  

    private static final String[] PHONES_PROJECTION = new String[] {  

        Phone.DISPLAY_NAME, Phone.NUMBER, Photo.PHOTO_ID,Phone.CONTACT_ID };  

    /**联系人显示名称**/  

    private static final int PHONES_DISPLAY_NAME_INDEX = 0;  

    /**电话号码**/  

    private static final int PHONES_NUMBER_INDEX = 1;  

    /**头像ID**/  

    private static final int PHONES_PHOTO_ID_INDEX = 2;  

    /**联系人的ID**/  

    private static final int PHONES_CONTACT_ID_INDEX = 3;  

    /**联系人名称**/  

    private ArrayList<String> mContactsName = new ArrayList<String>();  

    /**联系人头像**/  

    private ArrayList<String> mContactsNumber = new ArrayList<String>();  

    /**联系人头像**/  

    private ArrayList<Bitmap> mContactsPhonto = new ArrayList<Bitmap>();  

    ListView mListView = null;  

    MyListAdapter myAdapter = null;  

    @Override  

    public void onCreate(Bundle savedInstanceState) {  

    mContext = this;  

    mListView = this.getListView();  

    /**得到手机通讯录联系人信息**/  

    getPhoneContacts();  

    myAdapter = new MyListAdapter(this);  

    setListAdapter(myAdapter);  

    mListView.setOnItemClickListener(new OnItemClickListener() {  

        @Override  

        public void onItemClick(AdapterView<?> adapterView, View view,  

            int position, long id) {  

        //调用系统方法拨打电话  

        Intent dialIntent = new Intent(Intent.ACTION_CALL, Uri  

            .parse("tel:" + mContactsNumber.get(position)));  

        startActivity(dialIntent);  

        }  

    });  

    super.onCreate(savedInstanceState);  

    }  

    /**得到手机通讯录联系人信息**/  

    private void getPhoneContacts() {  

    ContentResolver resolver = mContext.getContentResolver();  

    // 获取手机联系人  

    Cursor phoneCursor = resolver.query(Phone.CONTENT_URI,PHONES_PROJECTION, null, null, null);  

    if (phoneCursor != null) {  

        while (phoneCursor.moveToNext()) {  

        //得到手机号码  

        String phoneNumber = phoneCursor.getString(PHONES_NUMBER_INDEX);  

        //当手机号码为空的或者为空字段 跳过当前循环  

        if (TextUtils.isEmpty(phoneNumber))  

            continue; 

        //得到联系人名称  

        String contactName = phoneCursor.getString(PHONES_DISPLAY_NAME_INDEX);  

        //得到联系人ID  

        Long contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);  

        //得到联系人头像ID  

        Long photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);  

        //得到联系人头像Bitamp  

        Bitmap contactPhoto = null;  

        //photoid 大于0 表示联系人有头像 如果没有给此人设置头像则给他一个默认的  

        if(photoid > 0 ) {  

            Uri uri =ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI,contactid);  

            InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(resolver, uri);  

            contactPhoto = BitmapFactory.decodeStream(input);  

        }else {  

            contactPhoto = BitmapFactory.decodeResource(getResources(), R.drawable.contact_photo);  

        }  

        mContactsName.add(contactName);  

        mContactsNumber.add(phoneNumber);  

        mContactsPhonto.add(contactPhoto);  

        }  

        phoneCursor.close();  

    }  

    }  

 

转载于:https://www.cnblogs.com/zhoujian315/p/3169469.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值