Я разрабатываю приложение для Android, в котором я показываю журналы вызовов и сведения о вызовах.
Я хочу отобразить изображение контакта в журнале вызовов. Я могу получить идентификатор контакта и uri из идентификатора контакта, но я получаю следующее исключение для всех контактов:
java.io.FileNotFoundException: File does not exist; URI: content://com.android.contacts/contacts/171
Вот приведенный ниже код, который я пробовал:
Cursor managedCursor = getContentResolver().query( CallLog.Calls.CONTENT_URI,null, null,null, android.provider.CallLog.Calls.DEFAULT_SORT_ORDER);
while ( managedCursor.moveToNext() )
{
contactId = getContactIDFromNumber(phNumber,this);
Uri uri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
}
public static int getContactIDFromNumber(String contactNumber,Context context)
{
int phoneContactID = new Random().nextInt();
Cursor contactLookupCursor = context.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 static Bitmap getContactBitmapFromURI(Context context, Uri uri)
{
InputStream input = null;
try
{
input = context.getContentResolver().openInputStream(uri);
//input = Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
if (input == null)
{
return null;
}
return BitmapFactory.decodeStream(input);
}