[android-developers] Re: Contacts-based app force-closing on Droid, unable to repro
Hey Eric,
When I was working on a Droid I found that fields were null
unexpectedly when I queried for a specific MIMETYPE. The display name
for a contact is not null with a GroupMembership MIMETYPE query but
there is no data in the phone number fields. My guess is that the
Phone.Number MIMETYPE might not have a display name column. Like me,
you may need two queries. One with a MIMETYPE that has display name
and another to fetch the numbers where selection is based on the
contact_id or raw_contact id collected in the first query.
Here is a question for you... How do you put contact data into the
Emulator? Unfortunately for me, although contacts can be loaded, the
Emulator data cannot be grouped. This means I am not able to use the
Emulator at all to test my code since I query for the
GroupMembership.CONTENT_ITEM_TYPE. If you or anyone has a suggestion,
great, my access to the Droid is limited and I really want to put out
a new feature on Alarmoid.
Boas Festas!
Beth
On Dec 23, 9:47 pm, Eric <eric.c.willi...@gmail.com> wrote:
> I'm having problems with my application on Droid phones. I am unable
> to reproduce the problems in the emulator. A co-worker of mine with a
> Droid also has no issues running my app. Any help you can provide
> would be much appreciated.
>
> My application is called Dialify. It's open source; you can find the
> code here:http://code.google.com/p/dialify/source/browse/#svn/trunk/Dialify/src...
>
> My app queries the contacts DB to display a list of contacts. The user
> can select contacts to turn them into notifications that can be dialed/
> texted.
>
> Droid users reported 2 problems:
>
> 1) Contacts not appearing
> 2) App force-closes when they begin to scroll through the contacts
> list
>
> My app creates a cursor over the contacts DB to display contacts. I
> realized problem #1 was due to using the API level 5 method of access
> which only shows contacts for the master account. I fixed this, but
> the force-close issue remains.
>
> Unfortunately, I am unable to replicate a force-close in the emulator.
> I thought maybe it was the number of contacts and created about 200 of
> them, to no avail. It's been happening to users who use Exchange and
> users who do not, so I haven't tried getting Exchange contacts into
> the Emulator.
>
> This is how my deployed app retrieves contacts today:http://code.google.com/p/dialify/source/browse/trunk/Dialify/src/org/...
>
> Here are some of the changes I made for API level 6 compatibility:
>
> //"Phone" is android.provider.ContactsContract.CommonDataKinds.Phone
> private static final String[] PROJECTION = new String[] {
> ContactsContract.Data._ID, //0
> Phone.DISPLAY_NAME, //1
> Phone.TYPE, //2
> Phone.LABEL, //3
> Phone.NUMBER, //4
> Phone.CONTACT_ID //5
>
> };
>
> private static final String SORT_PHONES_ASC =
> "upper(" + Phone.DISPLAY_NAME + "),"
> + Phone.TYPE + ","
> + "upper(" + Phone.LABEL + ")";
>
> //"Data" is android.provider.ContactsContract.Data
> String selection = Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE +
> "'";
>
> //here's the query itself:
> return _context.getContentResolver().query(
> ContactsContract.Data.CONTENT_URI,
> PROJECTION,
> selection,
> selectionArgs, //will be null in this case
> sort.getSort() //will be SORT_PHONES_ASC, above
> );
>
> //to display the contact I turn it into an internal type (Contact)
> //_contactTypes comes from resources.getStringArray
> (android.R.array.phoneTypes)
>
> public Contact getContactAtCursor(Cursor cursor) {
> int typeId = cursor.getInt(2);
> String type = (typeId == Phone.TYPE_CUSTOM) ? cursor.getString(3) :
> _contactTypes[typeId - 1];
>
> return new Contact(
> cursor.getLong(0), //id
> cursor.getLong(5), //contact ID
> cursor.getString(1), //display name
> cursor.getString(4), //number
> type
> );
>
> }
>
> I realize I can bring up a contact selector using an Intent, but I
> don't think that will work for me. My app has a custom view of
> contacts, and it always displays the contacts list.
>
> Any guidance, suggestions, feedback or help would be most welcome. I'm
> not sure how to proceed with this issue.
>
> Regards,
> Eric
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home