我想知道是否可以扩展Android联系人数据库?
从这里开始 - http://d.android.com/reference/android/provider/ContactsContract.html
它说:
ContactsContract定义了一个可扩展的 与联系人有关的数据库 信息
Extensible会向我建议我可以在正常值之外向联系人应用程序添加更多数据,例如姓名,号码,电子邮件,工作号码,家庭电话号码等。
但是,此页面的示例 - http://d.android.com/reference/android/provider/ContactsContract.RawContacts.html仅显示如何插入标准值(如名称),而不显示如何向联系人添加新字段。
此外,在网络上搜索没有提供有关扩展联系人数据的大量信息。
所以我想知道它是否可能,或者可扩展性是否涉及联系人的其他部分?
例如,我想为我的应用程序中具有特殊权限的联系人添加一个附加字段,这样当用户查看联系人时,他或她知道他们可以使用我的应用程序的用户。
这可能吗?
答案 0 :(得分:2)
您可以在联系人数据库中存储自定义数据。但是,“当用户查看联系人时,他或她知道他们可以使用我的应用程序的用户”,如果您认为用户将能够在使用内置Android联系人时看到您插入的自定义数据,则可能无法实现应用。您必须在自己的应用程序中显示自定义数据。
ContactsContract.Data类的javadoc应该提供解释,以及Contacts article。
要使用此功能,您需要通过查询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() { }
}