【问题标题】:Get only sim and device stored Contacts仅获取存储在 SIM 卡和设备上的联系人
【发布时间】:2018-04-02 12:57:09
【问题描述】:

我想显示一个列表,其中包含存储在设备和 SIM 中的联系人姓名(GIVEN_NAMEFAMILY_NAME)(我想排除帐户联系人)。

我现在要做的是:

1) 我在accountTypesArray 中获得所有帐户

2) 我查询 RawContacts 不包括帐户

String where = ContactsContract.RawContacts.ACCOUNT_TYPE + " NOT IN (" + makePlaceholders(accountTypesArray.length) + ") "; String whereArgs[] = accountTypesArray;

return new CursorLoader(getActivity(), ContactsContract.RawContacts.CONTENT_URI, new String[]{ContactsContract.RawContacts._ID}, where, whereArgs, null);

3) 我使用 mimeType 结构化名称查询 DATA

String where = ContactsContract.Data.MIMETYPE + "='" + ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE + "' AND " + ContactsContract.Data.RAW_CONTACT_ID + " IN (" + makePlaceholders(contactIDsArray.length) + ") ";

return new CursorLoader(getActivity(), ContactsContract.Data.CONTENT_URI, projection, where, contactIDsArray, SORT_ORDER);

问题是当contactIDsArray 的大小大于999 并且SQLite 抛出太多SQL 变量异常。 有没有更有效的方法?

提前谢谢你

【问题讨论】:

    标签: android android-contentprovider android-contacts android-contentresolver contactscontract


    【解决方案1】:

    这需要我们从研究不同的设备中获得的魔法字符串。

    对于 SIM 联系人,请运行以下查询:

    String selection = RawContacts.ACCOUNT_TYPE + " IN ('vnd.sec.contact.sim', 'com.oppo.contacts.sim')";
    String[] projection = { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY };
    getContentResolver().query(RawContacts.CONTENT_URI, projection, selection, null, null);
    

    对于设备联系人,请尝试以下操作:

    String selection = RawContacts.ACCOUNT_TYPE + " IN ('vnd.sec.contact.phone', 'com.htc.android.pcsc', 'com.sonyericsson.localcontacts', 'com.lge.sync', 'com.android.huawei.phone', 'Local Phone Account')";
    String[] projection = { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY };
    getContentResolver().query(RawContacts.CONTENT_URI, projection, selection, null, null);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多