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

时间:2010-04-09 19:32:53

标签: android widget contacts

我有一个小工具,可以通过电话号码打开联系人列表。我正在使用 Contacts.Intents.SHOW_OR_CREATE_CONTACT 我知道它已被弃用但我希望这适用于Android 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:   ERROR / CursorWindow(105):错误的请求   对于场0,6。 numRows = 2,   numColumns = 6

     

04-09 19:12:47.992:   ERROR / AndroidRuntime(105):   java.lang.IllegalStateException:get   第0行col 6的字段插槽失败

如何让它在上面的1.6和2.0上运行?

2 个答案:

答案 0 :(得分:1)

Android 2.0有一个完全新API,用于管理联系人(查找ContactsContract)。在我的应用程序中,我最终编写了两次低级联系人管理 - 一次用于2.0,一次用于1.6及以下(我通过反射检查以查看ContactsContract类是否存在并在这种情况下切换到2.0+代码)。 / p>

答案 1 :(得分:0)

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

http://developer.android.com/guide/topics/providers/content-providers.html

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

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