Могу ли я расширить базу данных контактов Android?

Мне было интересно, можно ли расширить базу данных контактов Android?

Отсюда - http://d.android.com/reference/android/provider/ContactsContract.html

В нем говорится:

ContactsContract определяет расширяемую базу данных контактной информации.

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

Однако примеры этой страницы — http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html показывает только, как вставить стандартные значения, такие как имя, а не как добавить новое поле в контакт.

Кроме того, поиск в Интернете не дает много информации о расширении данных контактов.

Поэтому мне было интересно, возможно ли это вообще или расширение относится к какой-то другой части контактов?

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

Это возможно?


person Donal Rafferty    schedule 19.01.2011    source источник


Ответы (1)


Пользовательские данные можно хранить в базе данных контактов. Однако «когда пользователь просматривает контакты, он или она знает, с какими пользователями они могут использовать мое приложение», может быть невозможно, если вы думаете, что пользователи смогут видеть пользовательские данные, которые вы вставили при использовании встроенных контактов Android. заявление. Вам нужно будет отображать пользовательские данные в своем собственном приложении.

Документация Java для класса ContactsContract.Data должна содержать объяснение, а также статью Контакты.

Чтобы использовать это, вам нужно получить необработанный идентификатор контакта, запросив RawContacts. .

Вот пример кода, который может помочь вам начать...

private void makePowerful(int rawContactId) {
    ContentValues values = new ContentValues();
    values.put(Privilege.RAW_CONTACT_ID, rawContactId);
    values.put(Privilege.MIMETYPE, Privilege.CONTENT_ITEM_TYPE);
    values.put(Privilege.PRIVILEGE_LEVEL, Privilege.TYPE_POWERFUL);
    Uri uri = getContentResolver().insert(Data.CONTENT_URI, values);
}

public static final class Privilege implements ContactsContract.DataColumnsWithJoins, ContactsContract.CommonDataKinds.CommonColumns {
    public static final String CONTENT_ITEM_TYPE = ContentResolver.CURSOR_ITEM_BASE_TYPE + "/my_app_privilege";
    public static final int TYPE_POWERFUL = 1;
    public static final int TYPE_WEAK = 2;
    public static final String PRIVILEGE_LEVEL = DATA1;

    private Privilege() { }
}
person satur9nine    schedule 23.01.2011
comment
Есть идеи, куда делась статья «Контакты»? Ссылка мертва (: - person Jeroen Wiert Pluimers; 25.07.2012
comment
Спасибо. Я хочу исследовать странную проблему с базой данных контактов: wiert.me/2012/07/24/ (размер 580 мегабайт, и автоматически растет без активных приложений). - person Jeroen Wiert Pluimers; 25.07.2012
comment
Это все еще так? Я вижу, что Whatsup добавил свой значок, так что теперь любой может увидеть его и щелкнуть прямо в списке контактов телефона. Я хотел бы выполнить подобное действие. - person Simon; 31.10.2013