2015-10-08 2 views
0

Я работаю над контактным приложением, его показывать пропущенные звонки, набранные вызовы, проблема возникает, когда кто-то, чей номер сотового телефона не звонит, у меня есть метод, который пытается получить имя вызывающего абонента, основанное на номере ячейки, а затем другое, которое получает идентификатор contactID на основе номера, тогда имя, номер и контактный идентификатор сохраняются в SQLlited Database, если вызывающий абонент не сохраняется в телефонной книге, контактуID присваивается случайное Interger, когда я хочу для извлечения вызывающих абонентов я вызываю метод, который получает номер, имя и контактный идентификатор, на дисплее Я использую contactID для запуска телефона и получения отображаемого изображения вызывающего абонента, но, глядя на то, что происходит с ошибкой, когда контакт несохраненный метод, который извлекает вызывающего абонента, является несохраненным, случайное значение, хранящееся в переменной contactID, сопоставляется с телефоном, если это ha ppens я получаю IllegalArgumentException Exception на context.getContentResolver().query(photoUri, new String[]{ContactsContract.Contacts.Photo.PHOTO}, null, null, null); вот мой полный метод, который возвращает дисплей растровогоIllegalArgumentException при попытке получить контактное фото Android

public Bitmap openPhoto(long contactId, Context context) { 
    Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId); 
    Uri photoUri = Uri.withAppendedPath(contactUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY); 
    Cursor cursor = context.getContentResolver().query(photoUri, 
      new String[]{ContactsContract.Contacts.Photo.PHOTO}, null, null, null); 
    if (cursor == null) { 
     return null; 
    } 
    try { 
     if (cursor.moveToFirst()) { 
      byte[] data = cursor.getBlob(0); 
      if (data != null) { 

       Log.d("BTmap","Bitmap Exists"); 
       return BitmapFactory.decodeStream(new ByteArrayInputStream(data)); 
      } 
     } 
    } finally { 
     cursor.close(); 
    } 
    Log.d("BTmap","Bitmap Dont Exist"); 
    return null; 


} 

может кто-нибудь поможет мне о том, как преодолеть эту ошибку, когда я запускаю метод openPhoto в (IllegalArgumentException e) попытке поймать блок Non из display Изображения загружают даже те, которые сохранены в контактной книге и имеют изображения на них, спасибо вам в Advance.

ответ

0

Я решил это, это было что-то очень простое, сначала я должен был проверить, было ли номер, который был вызван, сохранен в моей телефонной книге, если нет, я установил имя в несохраненный, затем в моем адаптере мне пришлось проверить, .getName() было равно Unsaved, это было тогда не нужно было загружать изображение, мне просто пришлось назначить мое изображение в null или мое изображение по умолчанию