【问题标题】:How to retrieve a single contact如何检索单个联系人
【发布时间】:2014-03-30 10:48:04
【问题描述】:

如何通过 id/lookupkey 检索单个联系人和一些相关数据(例如电子邮件、电话号码、地址...)?

这是我用来添加联系人的代码(实际上它来自互联网并且对我有用)。

// Asking the Contact provider to create a new contact
    try {
        result = this.context.getContentResolver().applyBatch(
                ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this.context, "Exception: " + e.getMessage(),
                Toast.LENGTH_SHORT).show();
    }

    Uri myContactUri = result[0].uri;
    int lastSlash = myContactUri.toString().lastIndexOf("/");
    int length = myContactUri.toString().length();
    int contactID = Integer.parseInt((String) myContactUri.toString()
            .subSequence(lastSlash + 1, length));

    return contactID;

现在我想获取这个新联系人。我该怎么做?我想出的是这样的:

    ContentResolver content = context.getContentResolver();

    String[] projection = { Data.LOOKUP_KEY, Data.MIMETYPE,
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.CommonDataKinds.Phone.NUMBER,
            ContactsContract.CommonDataKinds.Email.ADDRESS };

    // Defines the selection clause
    String selection = Data.LOOKUP_KEY + " = ?";

    // Defines the sort order
    String sortOrder = Data.LOOKUP_KEY;

    String[] args = {"2400"};

    Cursor cursor = content.query(Data.CONTENT_URI, projection, selection,
            args, sortOrder);

当我删除选择时,我会得到所有联系人+他们的所有数据。所以我在我的案例中查找了密钥 2400 并想通过它的查找键来获取这个联系人。好吧,行不通。 cursor.getCount() 返回 0。

有什么想法吗?

【问题讨论】:

    标签: android contact provider contactscontract


    【解决方案1】:

    我现在的解决方案是使用以下方法:

        String[] projection = { Data.MIMETYPE,
                ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Email.ADDRESS };
    
        // Defines the selection clause
        String selection = ContactsContract.Data.RAW_CONTACT_ID + "=?";
    
        // Defines the sort order
        String sortOrder = Data.LOOKUP_KEY;
    
        String[] args = { id+"" };
    
        Cursor cursor = content.query(Data.CONTENT_URI, projection, selection,
                args, sortOrder);
    

    排序顺序无所谓,但我用的是RAW_CONTACT_ID,效果很好!

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多