如何在android应用程序中从电话簿获取联系人号码和照片
我将制作一个电话簿,以便我从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.
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;
}