Telefonnummern aus Adressbuch auslesen

  • Antworten:1
Luca T.
  • Forum-Beiträge: 62

31.07.2014, 16:19:41 via Website

Hallo,

wie der Titel schon sagt, versuche ich für meine App, die Telefonnummern aus dem Android Adressbuch auszulesen, um sie später mit einem Server abzugleichen, damit man die Freunde nicht alle einzeln hinzufügen muss, sondern einfach nur auf einen Knopf zu klciken braucht, und alle sind da.

Die Namen bekommen ich auch schon, nur verstehe ich jetzt nicht ganz, wie ich dazu noch die passenden Nummern bekommen soll. Kann mir einer da weiterhelfen? Hier ist der Code den ich soweit habe

private void initialisiereButtons() {
    sync = (Button)findViewById(R.id.buttonSync);
    sync.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            final Cursor kontakte = getContentResolver().query(
                    ContactsContract.Contacts.CONTENT_URI,
                    new String[]{
                            PhoneLookup._ID,
                            PhoneLookup.DISPLAY_NAME,
                            /**ContactsContract.CommonDataKinds.Phone.NUMBER*/},  //funktioniert nicht, genauso wie PhnoeLookup.NUMBER nicht funktioniert
                            null,
                            null,
                            null
                            );
            if(kontakte == null){
                Toast.makeText(getApplicationContext(), "Ein Fehler ist aufgetreten", Toast.LENGTH_SHORT).show();
                return;
            }
            kontakte.moveToFirst();
            while(!kontakte.isAfterLast()){
                MeineFreundeDataModel DataModel = new MeineFreundeDataModel();
                DataModel.setName(kontakte.getString(kontakte.getColumnIndex(PhoneLookup.DISPLAY_NAME)));
                DataModel.setID(kontakte.getInt(kontakte.getColumnIndex(PhoneLookup._ID)));
                MeineFreunde.add(DataModel);
                kontakte.moveToNext();
            }
            kontakte.close();
            for(int i = 0; i<MeineFreunde.size();i++){
                System.out.println(MeineFreunde.get(i).getName()+i);
                System.out.println(MeineFreunde.get(i).getID());
            }

        }
    });

mfg

Antworten
Micha Roth
  • Forum-Beiträge: 26

22.08.2014, 10:49:33 via Website

Hey,

du musst im Cursor noch auf die Nummern zugreifen.
Das kann dann wie hier aussehen:

Cursor c = getContentResolver().query(
            ContactsContract.Data.CONTENT_URI,          
            null, //new String[] {ContactsContract.Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL, ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME},          
            ContactsContract.Data.CONTACT_ID + "=?" + " AND "+ContactsContract.Data.MIMETYPE"; // + "='" + Phone.CONTENT_ITEM_TYPE "'",
            new String[] {String.valueOf(contactId)}, 
            null);

Quelle: android-developers . de/ android-language-java/ name-vorname-telefonnummern-aus-kontakten-1342.html

Und dann einfach auslesen:

Log.v("btnTest", "NUMBER: " + c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));

Grüße von

Stirnraten.de

Antworten