1

我使用 Phonegap (2.5) 从 android (4.0) 获取联系人图像,以列出带有头像和姓名的联系人。

联系人头像可以作为 url 数据(示例数据:content://com.android.contacts/contacts/189/photo)但我不知道如何处理该 url 指向空图像(因为它将显示在该联系人项目中出现一个带有问号的蓝色方块,没有设置 avarta )。如果图像为空或未设置,那么它应该是我的默认图像 url。

...
navigator.contacts.find(
  ['id', 'name', 'phoneNumbers', 'photos', 'displayName'],
  function(deviceContacts) {     
  for (var i = 0; i < deviceContacts.length; i++) {
        var deviceContact = deviceContacts[ i ];
        if (deviceContact.photos !== null){
            img = deviceContact.photos[0].value; //url to image
            my_img_item.setSrc(img);
            //how to check if image is null or not setup then show default image?

        }
...
}

请大家帮忙,谢谢。

4

1 回答 1

2

我对该主题进行了进一步的研究。我检查了 Phonegap 代码(不幸的是,我这里只有 2.8 版。

我发现了这个:

  private JSONObject photoQuery(Cursor cursor, String contactId) {
           JSONObject photo = new JSONObject();
           try {
               photo.put("id", cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Photo._ID)));
               photo.put("pref", false);
               photo.put("type", "url");
               Uri person = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, (new Long(contactId)));
               Uri photoUri = Uri.withAppendedPath(person, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
               photo.put("value", photoUri.toString());
           } catch (JSONException e) {
               Log.e(LOG_TAG, e.getMessage(), e);
           }

           return photo; }

如果我正确地解释了这一点,那么 URI 只是一般地放在一起,甚至没有检查是否有可用的头像。所以你可以做的是编写你自己的Phonegap-plugin来构建你自己的原生查询。否则我相信,你没有办法实现你计划做的事情。

于 2013-07-10T09:37:44.280 回答