java.lang.IllegalArgumentException:URI:content://com.android.contacts/contacts/-166733728/photo

时间:2014-11-06 01:21:00

标签: android facebook photo contact

我见过很多答案,尝试了很多答案,但没有运气,有时候我找不到文件或

java.lang.IllegalArgumentException:URI:content://com.android.contacts/contacts/-166733728/photo,呼叫用户:

尝试了以下方法:

public static long getContactIDFromNumber(String contactNumber)

{   contactNumber = Uri.encode(contactNumber);
         long phoneContactID = new Random().nextInt();
            Cursor contactLookupCursor = myContext.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(contactNumber)),new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null);
                        while(contactLookupCursor.moveToNext()){
                            phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
                         }
                        contactLookupCursor.close();

   return phoneContactID;
            }




                public InputStream openThumbContact(long contactId) {
                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
                    Uri photoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
                    Cursor cursor = myContext.getContentResolver().query(photoUri,
                         new String[] {Contacts.Photo.PHOTO}, null, null, null);
                    if (cursor == null) {
                        return null;
                    }
                    try {
                        if (cursor.moveToFirst()) {
                            byte[] data = cursor.getBlob(0);
                            if (data != null) {
                                return new ByteArrayInputStream(data);
                            }
                        }
                    } finally {
                        cursor.close();
                    }
                    return null;
                }

                public InputStream openDisplayPhotoContact(long contactId) {
                    Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, contactId);
                    Uri displayPhotoUri = Uri.withAppendedPath(contactUri, Contacts.Photo.DISPLAY_PHOTO);
                    try {
                        AssetFileDescriptor fd =
                            myContext.getContentResolver().openAssetFileDescriptor(displayPhotoUri, "r");
                        return fd.createInputStream();
                    } catch (IOException e) {
                        return null;
                    }
                }

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

理想情况下,我想在联系人或Facebook存储的拇指中显示拇指,是否有人有工作方法?联系人照片可在联系人列表中找到,但我无法加载。

0 个答案:

没有答案