Могу ли я расширить базу данных контактов Androids? - PullRequest
7 голосов
/ 19 января 2011

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

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

Там написано:

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

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

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

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

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

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

Возможно ли это?

1 Ответ

2 голосов
/ 23 января 2011

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

Javadocs для класса ContactsContract.Data должны предоставить объяснение, а также статью Contacts .

Чтобы использовать это, вам необходимо получить необработанный идентификатор контакта, запросив 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() { }
}
...