【问题标题】:Android Contact get Photo Thumbnail in one queryAndroid 联系人在一次查询中获取照片缩略图
【发布时间】:2017-05-17 21:04:16
【问题描述】:

我有很多查询,并且需要花费大量时间来获取联系人数据。 因此需要将所有查询转换为一个。

我在一个查询中获得了所有其他信息,例如显示名称、手机号码、标签、电子邮件 但只有通过拍照才能找到问题

帮助我将下面的照片查询转换为单个查询并获取图片的 uri:

ContentResolver KntRslverVar = getContentResolver();
Cursor ContctKsrVar = KntRslverVar.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
        new String[] {
                ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER},
        null, null, null);

while (ContctKsrVar.moveToNext())
{
    String ContctUidVar = ContctKsrVar.getString(ContctKsrVar.getColumnIndex(ContactsContract.Contacts._ID));
    String ContctNamVar = ContctKsrVar.getString(ContctKsrVar.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    String ContctMobVar = ContctKsrVar.getString(ContctKsrVar.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

    Cursor ContctPflPicKsrVar = KntRslverVar.query(
            ContactsContract.Data.CONTENT_URI,
            null,
            ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?",
            new String[]{ContctUidVar, ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE},
            null);

    if (ContctPflPicKsrVar != null && ContctPflPicKsrVar.getCount() > 0)
    {
        while(ContctPflPicKsrVar.moveToNext())
        {
            Uri ContctPflPicUriVar = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(ContctUidVar));
            PflPicUriVar = Uri.withAppendedPath(ContctPflPicUriVar, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
        }
        ContctPflPicKsrVar.close();
    }
}

尝试 1:

 Cursor ContctKsrVar = KntRslverVar.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
        new String[] {
                ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER
                ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE},
        null, null, null);

尝试 2:

Cursor ContctKsrVar = KntRslverVar.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
        new String[] {
                ContactsContract.CommonDataKinds.Phone._ID,
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER
                ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI},
        null, null, null);

还需要从获取的查询中获取 uri 的帮助:

Uri KctPflPicUriVar = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, Long.parseLong(KctUidVar));
PflPicUriVar = Uri.withAppendedPath(KctPflPicUriVar, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);

【问题讨论】:

    标签: android mysql uri photo contact


    【解决方案1】:

    |*|优化:在一次查询中获取带有标签和照片缩略图的显示名称和编号:在不到 4 秒内获取结果查询。

    ContentResolver contntRslverVar = getContentResolver();
    Cursor contctKsrVar = contntRslverVar.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
            new String[] {
                    ContactsContract.CommonDataKinds.Phone._ID,
                    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER,
                    ContactsContract.CommonDataKinds.Phone.TYPE,
                    ContactsContract.CommonDataKinds.Phone.LABEL,
                    ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI},
            null, null, null);
    
    while (contctKsrVar.moveToNext())
    {
        String contctUidVar = contctKsrVar.getString(contctKsrVar.getColumnIndex(ContactsContract.Contacts._ID));
        String contctNamVar = contctKsrVar.getString(contctKsrVar.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        String contctMobVar = contctKsrVar.getString(contctKsrVar.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
    
        int MobLblTypVar = contctKsrVar.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);
        int MobLblTipVar = contctKsrVar.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL);
        MobLblTypVar = contctKsrVar.getInt(MobLblTypVar);
    
        String contctMobLblVar;
        if(MobLblTypVar == ContactsContract.CommonDataKinds.Phone.TYPE_CUSTOM)
        {
            contctMobLblVar = contctKsrVar.getString(MobLblTipVar);
        }
        else
        {
            CharSequence MobLblSrgVar = ContactsContract.CommonDataKinds.Phone.getTypeLabel(getResources(), MobLblTypVar, "Mobile");
            contctMobLblVar = MobLblSrgVar.toString();
        }
    
        String PflPicSrgVar = contctKsrVar.getString(contctKsrVar.getColumnIndex(ContactsContract.CommonDataKinds.Phone.PHOTO_THUMBNAIL_URI));
        if(PflPicSrgVar != null) Uri PflPicUriVar = Uri.parse(PflPicSrgVar);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多