Android – получение списка контактов с уличными адресами, но не таких недорогих, как Skype, где адрес является только городом и штатом

Я получил курсор, получая все контакты в приложении, у которых есть адрес улицы. Затем этот курсор передается в адаптер. Все идет нормально. Кроме того, я также получаю кучу недорогих контактов (в основном из 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; } 

Solutions Collecting From Web of "Android – получение списка контактов с уличными адресами, но не таких недорогих, как Skype, где адрес является только городом и штатом"

Вы можете изменить selection и / или selectionArgs чтобы указать больше критериев, например, чтобы поле «Улица» не было нулевым:

 String selection = ContactsContract.CommonDataKinds.StructuredPostal.DISPLAY_NAME + " like ? AND " + ContactsContract.CommonDataKinds.StructuredPostal.STREET + " IS NOT NULL"; 

Это просто SQL, поэтому укажите столько полей из ContactsContract.CommonDataKinds.StructuredPostal и любых условий для них, которые вы хотите.