установите ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL в пользовательское значение

#android #contactscontract

#Android #contactscontract

Вопрос:

Я вызываю намерение добавить контакт на устройство следующим образом :

                     Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
                    intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
                    intent.putExtra(ContactsContract.Intents.Insert.NAME,
                            user.getName());
                    intent.putExtra(ContactsContract.Intents.Insert.IM_HANDLE,
                            user.getID());
                    intent.putExtra(
                            ContactsContract.Intents.Insert.IM_PROTOCOL,
                            ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
                    startActivityForResult(intent, 0);
 

В документации говорится:

общедоступный статический ПРОТОКОЛ окончательной строки
Этот столбец должен быть заполнен одной из определенных констант, например PROTOCOL_YAHOO . Если значение этого столбца равно PROTOCOL_CUSTOM, CUSTOM_PROTOCOL должен содержать имя пользовательского протокола. Постоянное значение: «data5».

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

Комментарии:

1. Вы уже нашли решение своей проблемы? Я борюсь с точно такой же проблемой.

2. Да, я это сделал. Вы не можете передать пользовательский протокол через intent. 🙁

3. Спасибо за ваш ответ. Какой код вы использовали для замены приведенного выше?

Ответ №1:

Вы можете добавить свой пользовательский протокол таким образом.

 Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
intent.putExtra(ContactsContract.Intents.Insert.NAME, user.getName());

ArrayList<ContentValues> data = new ArrayList<ContentValues>();
ContentValues values = new ContentValues();
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Im.DATA, user.getID());
values.put(ContactsContract.CommonDataKinds.Im.PROTOCOL, ContactsContract.CommonDataKinds.Im.PROTOCOL_CUSTOM);
values.put(ContactsContract.CommonDataKinds.Im.CUSTOM_PROTOCOL, "your_protocol");
data.add(values);
intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA, data);

startActivityForResult(intent, 0);