欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

Android使用READ_CONTACTS读取手机联系人

发布时间:2024/1/17 Android 52 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Android使用READ_CONTACTS读取手机联系人 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
实例代码: package com.example.readcontacts;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 MainActivity 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(); } }/** 得到手机SIM卡联系人人信息 **/ private void getSIMContacts() { ContentResolver resolver = mContext.getContentResolver(); // 获取Sims卡联系人 Uri uri = Uri.parse("content://icc/adn"); Cursor phoneCursor = resolver.query(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);// Sim卡中没有联系人头像mContactsName.add(contactName); mContactsNumber.add(phoneNumber); }phoneCursor.close(); } }class MyListAdapter extends BaseAdapter { public MyListAdapter(Context context) { mContext = context; }public int getCount() { // 设置绘制数量 return mContactsName.size(); }@Override public boolean areAllItemsEnabled() { return false; }public Object getItem(int position) { return position; }public long getItemId(int position) { return position; }public View getView(int position, View convertView, ViewGroup parent) { ImageView image = null; TextView title = null; TextView text = null; if (convertView == null || position < mContactsNumber.size()) { convertView = LayoutInflater.from(mContext).inflate( R.layout.colorlist, null); image = (ImageView) convertView.findViewById(R.id.color_image); title = (TextView) convertView.findViewById(R.id.color_title); text = (TextView) convertView.findViewById(R.id.color_text); } // 绘制联系人名称 title.setText(mContactsName.get(position)); // 绘制联系人号码 text.setText(mContactsNumber.get(position)); // 绘制联系人头像 image.setImageBitmap(mContactsPhonto.get(position)); return convertView; }} } 注意:用户权限 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="ndroid.permission.CALL_PHONE" />

总结

以上是生活随笔为你收集整理的Android使用READ_CONTACTS读取手机联系人的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。