1)创建Contact类代码如下

package com.example.androidapp;import android.graphics.Bitmap;public class Contact {/*姓名*/private String contactName;public void setContactName(String _contactName){this.contactName=_contactName;}public String getContactName(){return contactName;}/*电话号码*/private String contactNumber;public void setContactNumber(String _contactNumber){this.contactNumber=_contactNumber;}public String getContactNumber(){return contactNumber;}/*图片*/private Bitmap contactPhoto;public void setContactPhoto(Bitmap _contactPhoto){this.contactPhoto=_contactPhoto;}public Bitmap getContactPhoto(){return contactPhoto;}}

2)创建contactlist.xml作为自定义ListView的样式代码如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <ImageView        android:id="@+id/contactPhoto"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/contactName"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="TextView" />    <TextView        android:id="@+id/contactNumber"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="TextView" /></LinearLayout>

3)创建MyListAdapter.java作为自定ListAdapeter代码如下

package com.example.androidapp;import java.util.ArrayList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;class MyListAdapter extends BaseAdapter {private ArrayList<Contact> contacts=null;private Context context=null;public MyListAdapter(ArrayList<Contact> _contacts,Context _context){this.contacts=_contacts;this.context=_context;}      public int getCount() {          //设置绘制数量          return contacts.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 contactPhotoImageView = null;          TextView contactNameTextView = null;          TextView contactNumberTextView = null;          if (convertView == null || position < contacts.size()) {          convertView = LayoutInflater.from(context).inflate(              R.layout.contactlist, null);          contactPhotoImageView = (ImageView) convertView.findViewById(R.id.contactPhoto);          contactNameTextView = (TextView) convertView.findViewById(R.id.contactName);          contactNumberTextView = (TextView) convertView.findViewById(R.id.contactNumber);          }         //绘制联系人头像          contactPhotoImageView.setImageBitmap(contacts.get(position).getContactPhoto());          //绘制联系人名称          contactNameTextView.setText(contacts.get(position).getContactName());          //绘制联系人号码          contactNumberTextView.setText("("+contacts.get(position).getContactNumber()+")");          return convertView;      }  }  
4)修改MainActivity.java代码将自定ListAdapeter绑定给ListView代码如下

package com.example.androidapp;import java.io.InputStream;import java.util.ArrayList;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.app.Activity;import android.content.ContentResolver;import android.content.ContentUris;import android.content.Context;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.text.TextUtils;import android.view.Menu;import android.widget.ListView;public class MainActivity extends Activity {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 ListView mListView = null;          private MyListAdapter myAdapter=null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mContext = this; mListView=(ListView)findViewById(R.id.listView1);/**得到手机通讯录联系人信息**/ ArrayList<Contact> contacts=getPhoneContacts();myAdapter=new MyListAdapter(contacts,mContext);mListView.setAdapter(myAdapter);}/**得到手机通讯录联系人信息**/    private ArrayList<Contact> getPhoneContacts() {        /**联系人**/          ArrayList<Contact> contacts=new ArrayList<Contact>();        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);//得到联系人IDLong contactid = phoneCursor.getLong(PHONES_CONTACT_ID_INDEX);//得到联系人头像IDLong photoid = phoneCursor.getLong(PHONES_PHOTO_ID_INDEX);//得到联系人头像BitampBitmap 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.ic_launcher);}Contact contact=new Contact();contact.setContactName(contactName);contact.setContactNumber(phoneNumber);contact.setContactPhoto(contactPhoto);contacts.add(contact);    }    phoneCursor.close();}return contacts;    }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

5)最重要的是须要AndroidManifest.xml中 加入权限 否则代码会报错的。 千万别忘了。

<!-- 读取联系人权限 -->   <uses-permission android:name="android.permission.READ_CONTACTS"/>  



更多相关文章

  1. Android代码实现飞行模式的打开
  2. Android对应用程序的资源文件xml解析的源代码在哪里
  3. android:软件的安装和卸载源代码
  4. 向Android社区贡献代码过程详解
  5. Android(Kotlin版本)MVC框架的实例以及代码
  6. 《疯狂Android讲义》第4版 代码
  7. 代码虚拟的[小代码]在Android和PHP之间的加密/解密,AES加密

随机推荐

  1. 【Android】九宫格手势锁简单实现
  2. Android开发初体验,提高Android运行效率
  3. 开发可统计单词个数的Android驱动程序(3)
  4. Android牟利之道(二)--广告平台的介绍
  5. Android中实现跨进程通信(IPC)的方式(三)
  6. Study on Android【三】--Intent消息传递
  7. Android开发人员终于在“app-构建控制台
  8. 为什么要用Android(安卓)Studio?
  9. Android中显示网络上的图片
  10. android重力感应模拟器sensorsimulator