0

如何在知道联系人号码的情况下获取组 ID

我想它必须是这个里面的另一个查询,但我不知道该怎么做

这是我尝试过的:

String[] projection = new String[]{ ContactsContract.Groups._ID };

Cursor cursor = getContentResolver().query(
        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
        projection,
        ContactsContract.CommonDataKinds.Phone.NUMBER +" = "+ number,
        null,
        null);

cursor.moveToNext();
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Groups._ID));

(查询不返回任何内容)

感谢帮助!

4

1 回答 1

3

Groups._ID您的查询不返回任何内容,因为dataset中没有这样的列CommonDataKinds.Phone

尝试这样的事情:

String sPhoneNumber = "+48123456789";    
Cursor cursor = getApplicationContext().getContentResolver().query(
                Data.CONTENT_URI, new String[] {CommonDataKinds.GroupMembership._ID}, 
                ContactsContract.CommonDataKinds.Phone.NUMBER+"='"+sPhoneNumber+"'", null, null);

sPhoneNumber带有所需电话号码的字符串在哪里。请记住,您的光标仍可能返回 0,具体取决于:

  1. 您的电话号码是如何格式化的,即您希望找到给定号码的联系人的组 ID,+49123456789而号码的格式是这样的+49 123 456 789。空格使这完全不同String
  2. 您的联系人不属于任何组。

此外,光标仍然可以返回更多结果,主要是在您的联系人属于多个组的情况下。

于 2013-09-23T06:38:35.277 回答