[Android] Nummers uit contacten ophalen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Anoniem: 294160

Topicstarter
Ik ben nog steeds bezig met een applicatie waarbij je smsjes kunt versturen via een website. Wat ik nu probeer is via de Android applicatie de contacten te laden uit het telefoonboek op je Android telefoon.

Op het moment heb ik dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public void ReadContact(){
        
        Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                
        while(people.moveToNext()) {
           int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
           int contactIdColumnIndex = people.getColumnIndex(PhoneLookup._ID);
           String contact = people.getString(nameFieldColumnIndex);
           String contactId = people.getString(contactIdColumnIndex);
           
           
           String hasPhone = people.getString(people.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
           String een = "1";
           if(hasPhone.equals(een)){
                                   
               
           }
           System.out.println(contactId);
           //System.out.println(hasPhone);
           System.out.println(contact);
           
           
        }
        
    }


Nu heb ik bij het if statement de volgende code:
code:
1
2
int nummmerindex = people.getColumnIndex(PhoneLookup.NUMBER);
String nummer = people.getString(nummmerindex);


Maar op dat ik dit uitvoer krijg ik de volgende fout:
code:
1
java.lang.IllegalStateException: get field slot from row 0 col -1 failed


Ik heb al al op diverse sites gezocht hoe dit werkt, maar ik krijg het niet werkend en / of opgelost. Heeft één van jullie toevallig een oplossing hoe ik dit kan oplossen?

Ik heb dit ook al gevolgd:
http://stackoverflow.com/...d-contacts-on-android-2-0

Alvast bedankt

[ Voor 3% gewijzigd door Anoniem: 294160 op 28-03-2011 14:28 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

public abstract int getColumnIndex (String columnName)
Since: API Level 1

Returns the zero-based index for the given column name, or -1 if the column doesn't exist. If you expect the column to exist use getColumnIndexOrThrow(String) instead, which will make the error more clear.
Wellicht heeft je eerste contact geen telefoonnummer? :) Hier ook wel een leesbaar stukje code.

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

Anoniem: 294160

Topicstarter
Bedankt voor je reactie, maar op die site heb ik net ook gekeken. Op het moment dat het contact een telefoonnummer heeft komt het langs de if statement. Maar op ik krijg dan nog steeds het telefoonnummer er niet uit.

code:
1
System.out.println(people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));


Als ik dit in het if statement zet krijg ik als waarde -1.

[ Voor 28% gewijzigd door Anoniem: 294160 op 28-03-2011 14:43 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 23-05 15:21

NMe

Quia Ego Sic Dico.

Wat is PhoneLookup en waar komt het vandaan? Weet je zeker dat je niet ContactsContract.CommonDataKinds.Phone moet hebben?

Sowieso is je vergelijking op hasPhone nogal ranzig. Het artikel waar je naar linkt heeft note bene de betere variant:
Java:
1
if (Boolean.parseBoolean(hasPhone))

[ Voor 41% gewijzigd door NMe op 28-03-2011 14:45 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Anoniem: 294160

Topicstarter
NMe schreef op maandag 28 maart 2011 @ 14:43:
Wat is PhoneLookup en waar komt het vandaan? Weet je zeker dat je niet ContactsContract.CommonDataKinds.Phone moet hebben?
Als ik de onderstaande code gebruik crasht hij ook:
code:
1
               String data = people.getString(people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));



Wat betreft
code:
1
if (Boolean.parseBoolean(hasPhone))


Ik had het even op een andere manier gedaan, omdat ik bij bovenstaande manier helemaal geen resultaat kreeg.

[ Voor 17% gewijzigd door Anoniem: 294160 op 28-03-2011 14:48 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 23-05 15:21

NMe

Quia Ego Sic Dico.

Anoniem: 294160 schreef op maandag 28 maart 2011 @ 14:46:
[...]

Als ik de onderstaande code gebruik crasht hij ook:
code:
1
               String data = people.getString(people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
....met dezelfde melding? Een andere? Andere regel misschien?

En je kan niet zomaar iets copy/pasten en verwachten dat het werkt. je geeft zelf aan dat je naar StackOverflow hebt gekeken maar je code is substantieel anders. Probeer eens eerst te doorgronden wat ze doen en dan daarna te kijken of je het zo aan kan passen wat jij wil.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1