Android-显示具有相同电话号码的联系人列表

Android-显示具有相同电话号码的联系人列表,android,widget,contacts,Android,Widget,Contacts,我有一个小部件,可以通过电话号码打开联系人列表。我正在使用Contacts.Intents.SHOW\u或\u CREATE\u CONTACT 我知道它已被弃用,但我希望它能在安卓1.6上运行。我有一个电话号码用于查找目的。这是密码 Intent contViewIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT); contViewIntent.setData(Uri.fromParts("tel", n

我有一个小部件,可以通过电话号码打开联系人列表。我正在使用Contacts.Intents.SHOW\u或\u CREATE\u CONTACT 我知道它已被弃用,但我希望它能在安卓1.6上运行。我有一个电话号码用于查找目的。这是密码

Intent contViewIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
contViewIntent.setData(Uri.fromParts("tel", number, null));

PendingIntent contPendIntent = PendingIntent.getActivity(context, 0, contViewIntent, 0);
views.setOnClickPendingIntent(viewID, contPendIntent);
当联系人列表中有两个或多个相同号码的联系人时,这将打开联系人列表并让用户选择一个。这在1.6上运行良好,但在2.0及更高版本上,它会显示姓名中只有数字1或数字2的联系人列表,当您从列表中选择其中一个进行查看时,会出现错误

04-09 19:12:47.891: 错误/游标窗口(105):请求错误 对于字段插槽0,6。numRows=2, numColumns=6

04-09 19:12:47.992: 错误/AndroidRuntime(105): java.lang.IllegalStateException:获取 第0行第6列的字段插槽失败


如何使其在1.6和2.0以上版本上运行?

我认为您最好将Android内容提供商api与SQL查询结合使用(查找一行或多行电话号码匹配):

然后,您可以显示一个选项屏幕,要求用户在查询返回两个联系人时选择合适的联系人


然后,您可以将_id字段(唯一)传递给contacts应用程序以打开所选联系人(避免出现您看到的错误)。

Android 2.0有一个全新的用于管理联系人的API(查找联系人合同)。在我的应用程序中,我最后写了两次低级联系人管理,一次是2.0,一次是1.6及以下版本(我通过反射检查ContactsContract类是否存在,然后切换到2.0+代码)。

我想错误是说它需要一行,但得到两行吗?可能以后android中的联系人应用程序删除了选择您提到的联系人功能?-只是猜测