如何在android应用程序中从电话簿获取联系人号码和照片

如何在android应用程序中从电话簿获取联系人号码和照片,android,Android,我将制作一个电话簿,以便我从android上访问联系人//访问联系人照片 public static Bitmap loadContactPhoto(ContentResolver cr, long id) { Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id); InputStream input = ContactsContract.Contacts.

我将制作一个电话簿,以便我从android上访问联系人

//访问联系人照片

public static Bitmap loadContactPhoto(ContentResolver cr, long  id) {
        Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, id);
        InputStream input = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
        if (input == null) {
            return null;
        }
        return BitmapFactory.decodeStream(input);
}
//将方法调用为

Bitmap bitmap = loadContactPhoto(getContentResolver(), _id);
imageView.setImageBitmap(bitmap);
//得到数字

private void getAllNumbers(long id) {
        //Getting numbers
        Cursor phones = null;
        try {
            phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    new String[]{Phone.NUMBER, Phone.TYPE},
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, 
                    null,
                    null);
            if(phones != null) {
                while(phones.moveToNext()){
                    switch(phones.getInt(phones.getColumnIndex(Phone.TYPE))){
                        case Phone.TYPE_MOBILE :
                            mobilePhone = phones.getString(phones.getColumnIndex(Phone.NUMBER));
                            break;
                        case Phone.TYPE_HOME :
                            homePhone = phones.getString(phones.getColumnIndex(Phone.NUMBER));
                            break;
                        case Phone.TYPE_WORK :
                            workPhone = phones.getString(phones.getColumnIndex(Phone.NUMBER));
                            break;
                        case Phone.TYPE_OTHER : // You can store other number also
                    }
                }
            }
        } catch (Exception e) {
            //Handle exception
        } finally {
            if(!phones.isClosed() || phones != null)
                phones.close();
        }
    }

愉快的编码。

我在这里分享完整的代码。你只需稍作更改,就可以从电话簿中获取姓名、图像和电话号码。 谢谢

Cursor=null;
字符串名称、电话号码、图像、电子邮件;
试一试{
游标=getApplicationContext().getContentResolver()
.query(Phone.CONTENT\u URI,null,null,null,null);
int nameIdx=cursor.getColumnIndex(Phone.DISPLAY\u NAME);
int phoneNumberIdx=cursor.getColumnIndex(Phone.NUMBER);
int photoidix=cursor.getColumnIndex(Phone.PHOTO_URI);
//int emailIDx
//=cursor.getColumnIndex(ContactsContract.CommonDataTypes.Email.DATA);
cursor.moveToFirst();
做{
HashMap HashMap=新的HashMap();
name=cursor.getString(nameIdx);
phoneNumber=cursor.getString(phoneNumberIdx);
image=cursor.getString(photoIDIX);
//email=cursor.getString(emailIDx);
如果(!phoneNumber.contains(“*”)){
hashMap.put(“名称”,“名称+名称”);
hashMap.put(“phoneNumber”,即“+phoneNumber”);
hashMap.put(“图像”,“图像+图像”);
//hashMap.put(“电子邮件”,“电子邮件+电子邮件”);
hashMapsArrayList.add(hashMap);
}
}while(cursor.moveToNext());
}捕获(例外e){
e、 printStackTrace();
}最后{
如果(光标!=null){
cursor.close();
}
}
myAdapter=新的myAdapter();
setAdapter(myAdapter);
myAdapter.notifyDataSetChanged();
}
});
}
私有类MyAdapter扩展了BaseAdapter
{
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回hashMapsArrayList.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回hashMapsArrayList.get(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
持票人持票人;
convertView=GetLayoutFlater().充气(R.layout.itemlist,null);
viewHolder=新的viewHolder();
if(convertView!=null){
viewHolder.textView_Name=(textView)convertView
.findViewById(R.id.textView\u名称);
viewHolder.textView_Number=(textView)convertView
.findViewById(R.id.textView\U编号);
viewHolder.imageView=(imageView)convertView
.findviewbyd(R.id.imageView\u用户);
//viewHolder.textView_Email=(textView)
//convertView.findViewById(R.id.textView\u电子邮件);
viewHolder.textView\u Name.setText(hashMapsArrayList
获取(职位)获取(“姓名”);
viewHolder.textView\u Number.setText(hashMapsArrayList.get(
位置),获取(“电话号码”);
//viewHolder.textView_Email.setText(hashMapsArrayList.get(position.get(“Email”));
String String\u imageCheck=hashMapsArrayList.get(位置).get(
“图像”);
if(string_imageCheck.equalsIgnoreCase(“null”)){
viewHolder.imageView
.setImageResource(R.drawable.ic_启动器);
}否则{
viewHolder.imageView
.setImageURI(Uri.parse(hashMapsArrayList.get(
位置),获取(“图像”);
}
}
返回视图;
}
类视图持有者{
//TextView TextView_电子邮件;
TextView TextView_名称;
TextView TextView_编号;
图像视图图像视图;
}
 Cursor cursor = null;
            String name, phoneNumber, image, email;
            try {
                cursor = getApplicationContext().getContentResolver()
                        .query(Phone.CONTENT_URI, null, null, null, null);
                int nameIdx = cursor.getColumnIndex(Phone.DISPLAY_NAME);
                int phoneNumberIdx = cursor.getColumnIndex(Phone.NUMBER);
                int photoIdIdx = cursor.getColumnIndex(Phone.PHOTO_URI);
                // int emailIDx
                // =cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);

                cursor.moveToFirst();
                do {
                    HashMap<String, String> hashMap = new HashMap<String, String>();
                    name = cursor.getString(nameIdx);
                    phoneNumber = cursor.getString(phoneNumberIdx);
                    image = cursor.getString(photoIdIdx);
                    // email=cursor.getString(emailIDx);

                    if (!phoneNumber.contains("*")) {
                        hashMap.put("name", "" + name);
                        hashMap.put("phoneNumber", "" + phoneNumber);
                        hashMap.put("image", "" + image);
                        // hashMap.put("email", ""+email);
                        hashMapsArrayList.add(hashMap);
                    }

                } while (cursor.moveToNext());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (cursor != null) {
                    cursor.close();
                }
            }
            myAdapter = new MyAdapter();
            listView.setAdapter(myAdapter);
            myAdapter.notifyDataSetChanged();

        }

    });
}

private class MyAdapter extends BaseAdapter

{

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return hashMapsArrayList.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return hashMapsArrayList.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ViewHolder viewHolder;
        convertView = getLayoutInflater().inflate(R.layout.itemlist, null);
        viewHolder = new ViewHolder();

        if (convertView != null) {
            viewHolder.textView_Name = (TextView) convertView
                    .findViewById(R.id.textView_name);
            viewHolder.textView_Number = (TextView) convertView
                    .findViewById(R.id.textView_number);
            viewHolder.imageView = (ImageView) convertView
                    .findViewById(R.id.imageView_user);
            // viewHolder.textView_Email=(TextView)
            // convertView.findViewById(R.id.textView_email);

            viewHolder.textView_Name.setText(hashMapsArrayList
                    .get(position).get("name"));
            viewHolder.textView_Number.setText(hashMapsArrayList.get(
                    position).get("phoneNumber"));
            // viewHolder.textView_Email.setText(hashMapsArrayList.get(position).get("email"));

            String string_imageCheck = hashMapsArrayList.get(position).get(
                    "image");
            if (string_imageCheck.equalsIgnoreCase("null")) {
                viewHolder.imageView
                        .setImageResource(R.drawable.ic_launcher);

            } else {
                viewHolder.imageView
                        .setImageURI(Uri.parse(hashMapsArrayList.get(
                                position).get("image")));
            }

        }

        return convertView;
    }

    class ViewHolder {
        // TextView textView_Email;
        TextView textView_Name;
        TextView textView_Number;

        ImageView imageView;
    }