Android 如何检查联系人是否有照片
我可以获取所有联系人并将其显示在列表视图中。我也有联系人的照片。我的问题是,如果联系人没有照片,我的listview不会显示任何内容(空白)。我正试图在某个地方检查contacts contract.commondatatypes.Phone.PHOTO\u THUMBNAIL\u URI是否有照片,但我找不到方法 在简历中,我想要的是,如果联系人有照片显示照片,如果没有,显示一个图标 任何帮助都是非常感谢的 代码:Android 如何检查联系人是否有照片,android,android-contacts,Android,Android Contacts,我可以获取所有联系人并将其显示在列表视图中。我也有联系人的照片。我的问题是,如果联系人没有照片,我的listview不会显示任何内容(空白)。我正试图在某个地方检查contacts contract.commondatatypes.Phone.PHOTO\u THUMBNAIL\u URI是否有照片,但我找不到方法 在简历中,我想要的是,如果联系人有照片显示照片,如果没有,显示一个图标 任何帮助都是非常感谢的 代码: private final static String[]FROM_COLUM
private final static String[]FROM_COLUMNS={
Contacts contract.CommonDataTypes.Phone.DISPLAY\u NAME,
Contacts contract.CommonDataTypes.Phone.NUMBER,
ContactsContract.CommonDataTypes.Phone.PHOTO\u缩略图\u URI
};
私有最终静态int[]到_id={
R.id.contactName,
R.id.message_字幕,
R.id.contact_imageview
};
私有静态最终字符串[]投影={
Contacts contract.CommonDataTypes.Phone.\u ID,
Contacts contract.commonDataTypes.Phone.CONTACT\u ID,
Contacts contract.CommonDataTypes.Phone.DISPLAY\u NAME,
Contacts contract.CommonDataTypes.Phone.NUMBER,
ContactsContract.CommonDataTypes.Phone.PHOTO\u缩略图\u URI
};
私有静态最终字符串选择=contacts contract.commonDataTypes.Phone.DISPLAY_NAME+“LIKE?”;
私有字符串[]mSelectionArgs={“%%”};
私有列表视图mContactsList;
私人SimpleCursorAdapter mCursorAdapter;
公众接触(){
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
返回充气机。充气(右布局。联系人列表\u碎片,容器,错误);
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
mContactsList=(ListView)getActivity().findViewById(R.id.contacts\u list);
mCursorAdapter=new SimpleCursorAdapter(getActivity(),R.layout.list_item,null,FROM_COLUMNS,TO_id,0);
mContactsList.setOnItemClickListener(this);
mContactsList.setAdapter(mCursorAdapter);
getLoaderManager().initLoader(0,null,this);
}
@凌驾
公共加载器onCreateLoader(int-id,Bundle-args){
返回新的游标装入器(getActivity(),ContactsContract.CommonDataTypes.Phone.CONTENT\u URI,投影,选择,mSelectionArgs,
Contacts contract.CommonDataTypes.Phone.DISPLAY_NAME+“ASC”);
}
试试这个:
改变
ContactsContract.CommonDataKinds.Phone.
到
在onCreateLoader中:
return new CursorLoader(getActivity(), baseUri, PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
在适配器中:
@Override
public void bindView(View view, Context context, Cursor cursor) {
ImageView imageView = (ImageView) view.findViewById(R.id.contact_imageview);
Bitmap profileImage = getPhoto(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
if(profileImage !=null) {
imageView.setImageBitmap(profileImage);
}else{
imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_contact));
}
}
private Bitmap getPhoto(String id){
Bitmap photo = null;
try{
InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(
getActivity().getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI , new Long(id).longValue()));
if(inputStream != null)
photo= BitmapFactory.decodeStream(inputStream);
}catch (Exception e){
}
return photo;
}
}
return new CursorLoader(getActivity(), baseUri, PROJECTION, select, null, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");
@Override
public void bindView(View view, Context context, Cursor cursor) {
ImageView imageView = (ImageView) view.findViewById(R.id.contact_imageview);
Bitmap profileImage = getPhoto(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)));
if(profileImage !=null) {
imageView.setImageBitmap(profileImage);
}else{
imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_contact));
}
}
private Bitmap getPhoto(String id){
Bitmap photo = null;
try{
InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(
getActivity().getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI , new Long(id).longValue()));
if(inputStream != null)
photo= BitmapFactory.decodeStream(inputStream);
}catch (Exception e){
}
return photo;
}
}