2010-08-24 2 views
0

Я пытаюсь отобразить контактную информацию, и от другого вопроса на StackOverflow я получил следующий фрагмент кодаAndroid; Как работает manageQuery в версии 2.2?

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"); 

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

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

EDIT: Это все, что я могу найти от андроида журналов отладки

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

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

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

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

Смежные вопросы