7

Ich habe einen Cursor abrufen alle Kontakte auf der App, die eine Adresse haben. Dieser Cursor wird dann an einen Adapter übergeben. So weit, ist es gut. Außer mir bekomme ich auch eine Reihe von Kontakten von geringem Wert (meistens von Skype), die nur eine State/Country Info haben. Gibt es eine einfache Möglichkeit, den URI zu ändern, um diese zu überspringen?Android - Getting Contact Liste mit Straßenadressen, aber keine niedrigen Werte wie Skype, wo die Adresse ist nur eine Stadt und Staat

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; 
    } 

Antwort

4

Sie können das ändern selection und/oder selectionArgs mehr Kriterien angeben, wie sichergestellt wird, dass die Straße Feld nicht null ist:

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

Dies ist nur SQL, so angeben, wie viele Felder aus ContactsContract.CommonDataKinds.StructuredPostal, und welche Bedingungen auf ihnen, die Sie wollen.

+0

Perfekt. Lief wie am Schnürchen. – Pyro979