Android 如何检查联系人是否有照片

Android 如何检查联系人是否有照片,android,android-contacts,Android,Android Contacts,我可以获取所有联系人并将其显示在列表视图中。我也有联系人的照片。我的问题是,如果联系人没有照片,我的listview不会显示任何内容(空白)。我正试图在某个地方检查contacts contract.commondatatypes.Phone.PHOTO\u THUMBNAIL\u URI是否有照片,但我找不到方法 在简历中,我想要的是,如果联系人有照片显示照片,如果没有,显示一个图标 任何帮助都是非常感谢的 代码: private final static String[]FROM_COLUM

我可以获取所有联系人并将其显示在列表视图中。我也有联系人的照片。我的问题是,如果联系人没有照片,我的listview不会显示任何内容(空白)。我正试图在某个地方检查contacts contract.commondatatypes.Phone.PHOTO\u THUMBNAIL\u URI是否有照片,但我找不到方法

在简历中,我想要的是,如果联系人有照片显示照片,如果没有,显示一个图标

任何帮助都是非常感谢的

代码:

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;
        }
    }