Как отобразить контакт в Android

1
//Look up a contact by phone number and display it.

Intent intent = new Intent(ContactsContract.Intents.SHOW_OR_CREATE_CONTACT);
intent.setData(Uri.fromParts("tel", vc.cellphone, null));
startActivity(intent);

Этот код работает по назначению. Однако, если есть более одного контакта с этим номером, мы получаем крах. Когда происходит авария. Logcat говорит:

04-04 05:26:34.764: INFO/ActivityManager(60): Starting activity: Intent { act=com.android.contacts.action.SHOW_OR_CREATE_CONTACT dat=tel:078551212 cmp=com.android.contacts/.ui.ShowOrCreateActivity }
04-04 05:26:35.834: INFO/ActivityManager(60): Starting activity: Intent { act=android.intent.action.SEARCH cmp=com.android.contacts/.ContactsListActivity (has extras) }
04-04 05:26:36.064: INFO/ContactsListActivity(276): Called with action: android.intent.action.SEARCH
04-04 05:26:36.804: INFO/ActivityManager(60): Displayed activity com.android.contacts/.ui.ShowOrCreateActivity: 1999 ms (total 1999 ms)
04-04 05:26:36.814: INFO/ActivityManager(60): Displayed activity com.android.contacts/.ContactsListActivity: 858 ms (total 858 ms)
04-04 05:26:43.153: ERROR/CursorWindow(276): Bad request for field slot 0,6. numRows = 2, numColumns = 6
04-04 05:26:43.173: DEBUG/AndroidRuntime(276): Shutting down VM
04-04 05:26:43.173: WARN/dalvikvm(276): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-04 05:26:43.183: ERROR/AndroidRuntime(276): Uncaught handler: thread main exiting due to uncaught exception
04-04 05:26:43.223: ERROR/AndroidRuntime(276): java.lang.IllegalStateException: get field slot from row 0 col 6 failed
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.database.CursorWindow.getString_native(Native Method)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.database.CursorWindow.getString(CursorWindow.java:329)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:49)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.database.CursorWrapper.getString(CursorWrapper.java:135)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at com.android.contacts.ContactsListActivity.getContactUri(ContactsListActivity.java:1564)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at com.android.contacts.ContactsListActivity.getSelectedUri(ContactsListActivity.java:1598)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at com.android.contacts.ContactsListActivity.onListItemClick(ContactsListActivity.java:1255)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.app.ListActivity$2.onItemClick(ListActivity.java:312)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.widget.ListView.performItemClick(ListView.java:3285)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.os.Handler.handleCallback(Handler.java:587)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.os.Handler.dispatchMessage(Handler.java:92)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.os.Looper.loop(Looper.java:123)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at android.app.ActivityThread.main(ActivityThread.java:4363)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at java.lang.reflect.Method.invokeNative(Native Method)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at java.lang.reflect.Method.invoke(Method.java:521)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-04 05:26:43.223: ERROR/AndroidRuntime(276):     at dalvik.system.NativeStart.main(Native Method)
  • 0
    что такое правильный контент и что вы получаете в неправильном контенте?
  • 0
    Правильный контент - это контакт с номером мобильного телефона, т.е. vc.cellphone. Неправильный контент - это действие под названием «Контакты» с двумя записями, помеченными как «2», каждая из которых вызывает сбой при нажатии.
Показать ещё 4 комментария
Теги:

1 ответ

2

После обновления вопроса большая часть этого ответа стала неактуальной, но ссылки могут по-прежнему быть полезными для других, имеющих проблемы с контактами, поэтому вместо того, чтобы удалять ответ, я решил сохранить их:


Ссылки на Q & A в SO:

Как я могу запустить действие "Добавить контакт" в android

Как позвонить в список контактов Android?

Запуск внешнего приложения из моего приложения

Этот вопрос касается именно вашей проблемы: Android. Показывает список контактов с тем же номером телефона. Существует ответ на DEzra, предлагающий использовать "провайдер Android-контента api в сочетании с SQL-запросом"


Ссылки на API Android:

http://developer.android.com/reference/android/content/Intent.html

http://developer.android.com/reference/android/provider/ContactsContract.html

  • 0
    Спасибо за все ссылки, боюсь, ни одна из них не привела к исправлению.
  • 0
    Нет проблем, но если вы исправили это, рассмотрите возможность написания того, что вы сделали в качестве ответа, и примите это, чтобы другие могли извлечь из этого пользу.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню