我有一个小工具,可以通过电话号码打开联系人列表。我正在使用 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上运行?
答案 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字段(唯一的)传递给联系人应用以打开所选联系人(避免您看到的错误)。