Android - 获取具有街道地址的联系人列表,但没有像Skype这样的低价值地址,其中地址只是一个城市和州

Pyr*_*979 7 android android-contentresolver street-address simplecursoradapter

我有一个光标检索应用程序上有街道地址的所有联系人.然后将此光标传递到适配器.到现在为止还挺好.除了我还得到一堆只有州/国家信息的低价值联系人(主要来自Skype).是否有一种简单的方法来修改URI以跳过这些?

public Cursor getDirectoryList (CharSequence constraint)  {

        String[] selectionArguments = { "%"+constraint.toString()+"%" };
        String selection = ContactsContract.CommonDataKinds.StructuredPostal.DISPLAY_NAME + " like ?";

        Uri uri = ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI;
        String sortOrder = ContactsContract.CommonDataKinds.StructuredPostal.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
        Cursor cr = getContentResolver().query(uri, null, selection, selectionArguments, sortOrder);

        return cr;
    }
Run Code Online (Sandbox Code Playgroud)

Jer*_*all 4

您可以修改selection和/或selectionArgs来指定更多条件,例如确保 Street 字段不为空:

String selection =
    ContactsContract.CommonDataKinds.StructuredPostal.DISPLAY_NAME + " like ? AND " +
    ContactsContract.CommonDataKinds.StructuredPostal.STREET + " IS NOT NULL";
Run Code Online (Sandbox Code Playgroud)

这只是 SQL,因此请指定ContactsContract.CommonDataKinds.StructuredPostal您想要的任意数量的字段以及它们的任何条件。