【问题标题】:How to find person in address book Android如何在地址簿中找到人 Android
【发布时间】:2012-01-09 12:31:19
【问题描述】:

我正在尝试在 Android 的通讯录中实现人员查找。这就是我的实现方式:

Cursor cur = this.context.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, null, Data.DISPLAY_NAME + "=?", new String[] { mKey }, null);
if (cur.moveToFirst()) {
  Intent n = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);  
  ((Activity) this.context).startActivityForResult(n, PICK_REQUEST);
if (PICK_REQUEST != 0) {
  if (Activity.RESULT_OK != 0) {
    ((Activity) this.context).startActivity(n);
        }
    }
 } else {
    Toast.makeText(this.context, "The contact does not exist", Toast.LENGTH_LONG).show();
    //  }

其中mKey 是要搜索的人的值。当我点击搜索时,似乎什么都没有发生。做错了什么?请指教。

谢谢。

【问题讨论】:

  • startActivityForResult 后面不应该有任何代码。您需要覆盖onActivityResult。谷歌(或等待有人在答案中编写代码)

标签: android android-intent android-contacts android-activity


【解决方案1】:

尝试使用:

Cursor cur = this.context.getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, null, Data.DISPLAY_NAME + " like '"+mKey+"%'", null, null);

只需检查 cur.getCount()>0 以了解您是否正在获取相关数据。希望您的通讯录中有名为 mKey 的联系人,否则您将始终获得空光标。 :P

【讨论】:

  • 感谢 Hiral,我仍然想知道我对活动的实施。即 Intent n = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI); ((活动) this.context).startActivityForResult(n, PICK_REQUEST);你怎么看?
  • 对不起..我还没有解决这个问题。无法帮助你! :(
【解决方案2】:

试试这个代码,用你的显示名称替换 A1

Cursor cursor1 = activity.getContentResolver().query(
                Contacts.CONTENT_URI,
                new String[] {Contacts._ID, Contacts.DISPLAY_NAME}, 
                Contacts.DISPLAY_NAME  + "=?",
                new String[] {"A1"}, 
                null);

【讨论】:

  • 嘿 Rajdeep,谢谢,但是我的光标 getcount 返回 0,即使该名称实际上在联系人通讯录中。有什么想法吗?
  • 显示名称是名字 + 姓氏
  • Thaks Rajdeep 然而,在测试了 Hiral 的代码后,它似乎工作了,非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多