aspose file tools*
The moose likes Android and the fly likes My phone has only 2 contacts, but when I query for them I get 5, how can this be? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Mobile » Android
Bookmark "My phone has only 2 contacts, but when I query for them I get 5, how can this be?" Watch "My phone has only 2 contacts, but when I query for them I get 5, how can this be?" New topic
Author

My phone has only 2 contacts, but when I query for them I get 5, how can this be?

James Elsey
Ranch Hand

Joined: Dec 21, 2007
Posts: 228

Hi,

I'm experimenting with Android, using eclipse, ADT, and the emulator

On the emulator, I have programmed in 2 contacts.

However, if I query for my contacts using the code below, I get 5 back, how can this be?!



(MeCercanaContact is a POJO, just 2 strings with accessors, nothing fancy)

output is :



I've cross-posted this on StackOverflow : http://stackoverflow.com/questions/3588585/android-i-only-have-2-contacts-yet-i-can-obtain-5-from-a-query-why

It seems that the cursor has a count of 5, I'm really baffled as to why. I've been through the tutorials on the android site, and thought I had the hang of it, clearly I was mistaken


Kind Regards, James. OCPJP 1.6 || My SCJP / OCJCP Study Notes
Interested in : SCJP, Google App Engine, Stripes, Android;|| My Bite-Size SCJP Study Blog
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9319
    
  17

The Data content provider returns individual rows related to a record. Basically if you have a contact with a name, a phone number, and an email address, then the Data content provider will return 3 rows for that contact. The Data content provider returns some data for the record and its type (like Phone.CONTENT_ITEM_TYPE or Email.CONTENT_ITEM_TYPE). If you want to extract specific information about a contact like a phone number or address, then you'll have to constraint the returned rows to only those type of records using the where clause of the content provider (some examples are given here)...


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
James Elsey
Ranch Hand

Joined: Dec 21, 2007
Posts: 228

Thanks Ankit,

I think I'm partially with you on this one. I understand that for each piece of data, you will get an individual row, and since I have stored the following :

name of James Elsey
name of Dave Smith
postcode for James elsey
postcode for Dave smith
phone number for James Elsey

Then that equates to 5 separate pieces of data, so that makes sense.

My confusion is your suggestion of using a where clause. I've looked at the examples you linked but I can't see how they will help. The examples use a contactID in the where clause to limit the results to a single contact, I don't want this

How can I get the fields for each contact, to have 2 rows in the cursor, so I can process each row individually (such as populating my POJO)?
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9319
    
  17

If you want to get individual information about all contacts like phone numbers or email addresses or postal addresses, you can use separate content providers. Like to get phone numbers you can use Phone provider, to get email addresses, you can use Email provider and to get postal address, you can use StructuredPost provider. Again for all these content providers, there can be multiple rows for the same person, like if a person has a home phone no. and a work phone no, the phone provider will return 2 rows for one person...
James Elsey
Ranch Hand

Joined: Dec 21, 2007
Posts: 228

I understand that I will need to do different queries, but I'm stuck at an initial stage.

I'm thinking I will have to do the following

Obtain list of unique contact IDs
Loop through each contact ID, running separate queries for email, postal, phone etc

However, I can't get a list of unique contact IDs

Using the following gives me duplicates



Please help me, I can sense I am close to resolving this issue
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9319
    
  17

I provided you with a link to a tutorial in your other topic which is this tutorial. If you go through it, you'll know that to get a list of Contact IDs, you'll need to query the Contacts provider...
James Elsey
Ranch Hand

Joined: Dec 21, 2007
Posts: 228

Thanks Ankit

Clearly I missed something the first time I went through that tutorial, going over it again has cleared it up

Cheers
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: My phone has only 2 contacts, but when I query for them I get 5, how can this be?