5

Ich fand dieses gut aussehende Layout für eine Kontaktliste: https://github.com/thehung111/ContactListViewErhalten Sie alle Namen und andere Angaben als String-Liste auf Android

jedoch die Kontakte hartcodiert sind. Also Ich muss Telefonkontakte abholen und die Kontaktliste ausfüllen.

Hier ist, was ich versucht habe:

public class ExampleDataSource { 

public static List<ContactItemInterface> getSampleContactList(){ 
    List<ContactItemInterface> list = new ArrayList<ContactItemInterface>(); 


    Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
    String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
         ContactsContract.CommonDataKinds.Phone.NUMBER}; 
    Cursor people = getContentResolver().query(uri, projection, null, null, null); 

    int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); 
    int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 

    people.moveToFirst(); 
    do { 
     String name = people.getString(indexName); 
     String number = people.getString(indexNumber); 
     list.add(new ExampleContactItem(name , number)); 

    } while (people.moveToNext()); 

    /* Example inputs for contact list 

    list.add(new ExampleContactItem("Lizbeth" , "Lizbeth Crockett")); 
    list.add(new ExampleContactItem("Lizbeth" , "Lizbeth Crockett")); 
    list.add(new ExampleContactItem("Zachery" , "Zachery Loranger")); 
    list.add(new ExampleContactItem("Vada" , "Vada Winegar")); 
    list.add(new ExampleContactItem("Essie" , "Essie Pass")); 

    */ 
    return list; 
} 

}

Ich habe Fehler auf getContentResolver() und versuchte Klasse zu einer Anwendung usw. Kein Glück so weit zu verlängern.

Die Hauptfrage ist also, wie man eine Liste, die Namen und Telefonnummern als String-Liste auf Android enthalten.

Antwort

0

Haben Sie in Ihrem Manifest unten die Berechtigung deklariert? Wenn nicht, bitte erkläre es.

<uses-permission android:name="android.permission.READ_CONTACTS" /> 
+0

Danke, aber das ist nicht das Problem hier. – user2882572

0

wird es zeigt alle Kontakte Namen und ihre Telefonnummer in neuer Zeile jeden:

String names=""; 

Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, 
             null,null,null, 
              null); 

            while (people.moveToNext()) { 


             int i=people.getColumnIndex(PhoneLookup.DISPLAY_NAME); 
             int i2=people.getColumnIndex(PhoneLookup._ID); 
             String name=people.getString(i); 
             String id1=people.getString(i2); 
             names+=name+":"; 
             Uri uri2 = ContactsContract. 
               CommonDataKinds.Phone.CONTENT_URI; 
               String[] projectio = new String[] { 
               ContactsContract.CommonDataKinds. 
               Phone.NUMBER }; 
               String selectio= ContactsContract. 
               CommonDataKinds.Phone.CONTACT_ID + 
               "=?"; 
               String[] selectionArg = new String[] 
               {id1 }; 
               Cursor peopl=getContentResolver().query(uri2,null,selectio,selectionArg,null); 
               while(peopl.moveToNext()) 
               { 
                int i3=peopl.getColumnIndex(CommonDataKinds.Phone.NUMBER); 

                String phonenum=peopl.getString(i3); 
                names+=phonenum+"\n"; 


               } 

              } 
Log.d("names":names);