#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);