2012-12-18 164 views
-1

嘿,我所有的程序员都有一些麻烦,让我的手机图像显示在应用程序中。下面的代码是什么,他用获得的联系人图片:Android获取联系人手机图像

private long getContactIdFromNumber(String number) { 
    Cursor c = null; 
    try { 
     String[] projection = new String[] { Contacts.Phones.PERSON_ID }; 
     Uri contactUri = Uri.withAppendedPath(
       Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number)); 
     c = getContentResolver().query(contactUri, projection, null, null, 
       null); 

     if (c.moveToFirst()) { 
      long contactId = c.getLong(c 
        .getColumnIndex(Contacts.Phones.PERSON_ID)); 
      return contactId; 
     } 
    } finally { 
     c.close(); 
    } 
    return -1; 
} 

private boolean initPhoto() { 
    boolean result = true; 
    try { 
     contactPhoto = People.loadContactPhoto(getApplicationContext(), 
       ContentUris.withAppendedId(People.CONTENT_URI, 
         getContactIdFromNumber(phoneNumber)), 
       R.drawable.header, null); 
    } catch (Exception e) { 
     result = false; 
    } 
    return result; 
} 

if (initPhoto()) { 
    contact1.setImageBitmap(contactPhoto); 
    contact2.setImageBitmap(contactPhoto); 
    contact3.setImageBitmap(contactPhoto); 
} 

我做了我的电话号码和图像的联系人,但在应用程序从未加载了。他应该在我上面发布的代码中寻找什么,以确保它抓取正确的电话号码?

回答

0

发现编号的格式不正确。它正在寻找xxxxxxxxxx,号码是这样(xxx)xxx-xxxx在手机中,所以它从来没有匹配。

0

您是否必须使用Contacts而不是ContactsContract?联系人已在API级别5中弃用。

如果您要为电话号码加载照片,请使用ContactsContract.PhoneLookup。在android.provider.ContactsContract.PhoneLookup的参考文档中有一个例子。在该表上查询将返回联系人的LOOKUP_KEY。用它来查询 ContactsContract.Contacts.Photo。

+0

所以,你的意思是说,我会发送联系人的名称,然后它会知道该联系人的图像? – StealthRT