Android; Как работает manageQuery в 2.2? - PullRequest
0 голосов
/ 25 августа 2010

Я пытаюсь отобразить контактную информацию, и из другого вопроса о stackOverflow у меня есть следующий фрагмент

String[] projection = new String[] {
        ContactsContract.Contacts.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
        ContactsContract.CommonDataKinds.Email.DISPLAY_NAME
     };

    Uri contacts =  ContactsContract.Contacts.CONTENT_LOOKUP_URI;
    //id of the Contact to return.
    long id = 3;

    //Make the query. 
    Cursor managedCursor = managedQuery(contacts,
                                        projection, // Which columns to return 
                                        null,       // Which rows to return (all rows)
                // Selection arguments (with a given ID)
                                        ContactsContract.Contacts._ID = "id", 
                // Put the results in ascending order by name
                                        ContactsContract.Contacts.DISPLAY_NAME + " ASC");

Похоже, что управляемый запрос был изменен в 2.2 (я верю, что первоначальный вопрос, где я получил это было связано с 2.0)

Что изменилось в 2.2? Я не могу найти способ отображения электронной почты, телефонных номеров и т. Д. Для контакта

РЕДАКТИРОВАТЬ: это все, что я могу найти в журналах отладки Android

08-24 20:49:51.893: ERROR/DatabaseUtils(519): Writing exception to parcel
08-24 20:49:51.893: ERROR/DatabaseUtils(519): java.lang.IllegalArgumentException: URI: content://com.android.contacts/contacts/lookup, calling user: com.example.android.contactmanager, calling package:com.example.android.contactmanager
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at com.android.providers.contacts.LegacyApiSupport.query(LegacyApiSupport.java:1911)
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at com.android.providers.contacts.ContactsProvider2.query(ContactsProvider2.java:4697)
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at android.content.ContentProvider$Transport.bulkQuery(ContentProvider.java:150)
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:111)
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at android.os.Binder.execTransact(Binder.java:288)
08-24 20:49:51.893: ERROR/DatabaseUtils(519):     at dalvik.system.NativeStart.run(Native Method)

1 Ответ

1 голос
/ 28 августа 2010

Я не знаю, что делает Contacts.CONTENT_LOOKUP_URI, но я использую RawContacts.CONTENT_URI.

Так что попытка Uri contacts = ContactsContract.RawContacts.CONTENT_URI или Uri contacts = ContactsContract.Contacts.CONTENT_URI также должна работать.

И оставитьselectionArgs (4-й аргумент), если вы не указали selection (3-й аргумент), потому что они имеют смысл только если дан selection.

...