Добавление контакта в новую группу в Android

Привет, я пытаюсь создать новую группу gmail и добавить в нее контакт. Мне удалось создать группу, но контакты не добавляются в нее. Я прочитал много ответов в stackoverflow, но ничего не получилось. Я не могу понять, где я ошибся. Я публикую свой код здесь, пожалуйста, помогите.

Создание группы

    public String createGroupInPhone() {

    String[] GROUP_PROJECTION = new String[]{ContactsContract.Groups._ID, ContactsContract.Groups.TITLE};
    ContentValues contentValues = null;

    try {


        ContentResolver cr = this.getContentResolver();
        contentValues = new ContentValues();

        contentValues.put(ContactsContract.Groups.TITLE, groupName);
        contentValues.put(ContactsContract.Groups.SHOULD_SYNC, true);
        contentValues.put(ContactsContract.Groups.GROUP_VISIBLE, 1);
        contentValues.put(ContactsContract.Groups.ACCOUNT_TYPE, "com.google");
        contentValues.put(ContactsContract.Groups.ACCOUNT_NAME, "[email protected]");
        cr.insert(ContactsContract.Groups.CONTENT_URI, contentValues);
    } catch (Exception e) {
        e.printStackTrace();
    }
    String groupID;
    Cursor getGroupID_Cursor;
    getGroupID_Cursor = this.getContentResolver().query(ContactsContract.Groups.CONTENT_URI, GROUP_PROJECTION, ContactsContract.Groups.TITLE + "=?", new String[]{groupName}, null);

    getGroupID_Cursor.moveToFirst();
    groupID = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex(ContactsContract.Groups._ID)));
    String groupTitle = (getGroupID_Cursor.getString(getGroupID_Cursor.getColumnIndex(ContactsContract.Groups.TITLE)));
    System.out.println("Group Title: " + groupTitle);
    getGroupID_Cursor.close();
    return groupID;
}

У меня есть сомнения. Как этот ContactsContract.Groups._ID связан с GROUP_ROW_ID,GROUP_SOURCE_ID

добавление контакта в новую группу

    public void addContactsToPhoneGroups(String contact_id, String groupId, String groupName) {

    System.out.println("ContactId: " + contact_id);
    System.out.println("GroupId: " + groupId);
    ArrayList<ContentProviderOperation> ops = new ArrayList<>();

    ContentValues values = new ContentValues();}
    values.put(ContactsContract.CommonDataKinds.GroupMembership.RAW_CONTACT_ID,
            contact_id);
    values.put(
            ContactsContract.CommonDataKinds.GroupMembership.GROUP_ROW_ID,
            groupId);
    values
            .put(
                    ContactsContract.CommonDataKinds.GroupMembership.MIMETYPE,
                    ContactsContract.CommonDataKinds.GroupMembership.CONTENT_ITEM_TYPE);

     getContentResolver().insert(
            ContactsContract.Data.CONTENT_URI, values);

person Satya    schedule 04.08.2016    source источник


Ответы (2)


Я вижу много людей, публикующих примеры, в которых они выполняют последующий запрос, чтобы получить идентификатор вставленного элемента.

Но возврат из вставки — это Uri вставленной строки.

Зачем тратить вызов в БД?

long id = -1;
Uri insertedUri = getContentResolver().insert(...);
if (insertedUri!=null) {
   id = ContentUris.parseId(insertedUri);
}
person davidmc.w3sys    schedule 14.12.2016

person    schedule
comment
Очень хорошие примеры, мне нужно спросить о addContactToGroup, как добавить новый контакт? Я что-то упускаю из-за использования этой функции. У меня также есть вопрос по stackoverflow.com/questions/46544711 / - person Nikola Lukic; 03.10.2017