7

我想知道是否可以扩展 Android 联系人数据库?

从这里 - http://d.android.com/reference/android/provider/ContactsContract.html

它说:

ContactsContract 定义了一个可扩展的联系人相关信息数据库

Extensible 建议我可以在联系人应用程序中添加更多数据,而不是正常值,例如姓名、号码、电子邮件、工作号码、家庭号码等。

但是,此页面的示例 - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html仅显示如何插入名称等标准值,而不是如何向联系人添加新字段。

此外,在网络上搜索并没有找到很多关于扩展联系人数据的信息。

所以我想知道它是否可能或者可扩展是指联系人的其他部分?

例如,我想为在我的应用程序中具有特殊权限的联系人添加一个附加字段,以便当用户查看联系人时,他或她知道他们可以与哪些用户一起使用我的应用程序。

这可能吗?

4

1 回答 1

2

您可以将自定义数据存储在联系人数据库中。但是,如果您认为用户将能够看到您在使用内置 Android 联系人时插入的自定义数据,那么“当用户查看联系人时,他或她就知道他们可以与哪些用户一起使用我的应用程序”,这可能是不可能的应用。您必须在自己的应用程序中显示自定义数据。

ContactsContract.Data类的 javadocs以及Contacts 文章应提供解释。

要使用它,您需要通过查询RawContacts来获取原始联系人 ID 。

这里有一些示例代码可以帮助您入门...

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() { }
}
于 2011-01-23T06:44:40.697 回答