//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 :(得分:2)
问题更新后,大部分答案变得无关紧要,但链接可能仍然对其他有联系人问题的人有用,所以我决定保留这些答案,而不是删除答案:
SO中与Q& A的链接:
How can I launch the 'Add Contact' activity in android
How to call Android contacts list?
Launching external application from my app
这个问题完全解决了您的问题:Android - Show list of contacts with same phone number。答案是 DEzra 建议使用“Android内容提供程序api与SQL查询结合”
指向android API的链接:
http://developer.android.com/reference/android/content/Intent.html
http://developer.android.com/reference/android/provider/ContactsContract.html