public static final class ContactsContract.Directory
extends Object
implements BaseColumns
java.lang.Object | |
↳ | android.provider.ContactsContract.Directory |
目录代表联系人语料库,例如本地联系人,Google Apps全球通讯簿或公司全球通讯簿。
一个目录是作为一个内容提供者实现的,它具有唯一的权限和与主要的联系人提供者相同的API。 但是,并不期望每个目录提供者都将完整地实施本合同。 如果目录提供程序没有针对特定请求的实现,则应该引发UnsupportedOperationException。
目录最重要的用例是搜索。 目录提供商预计至少支持Contacts.CONTENT_FILTER_URI
。 如果号码簿提供商想要参与电子邮件和电话查询功能,它还应该实现CommonDataKinds.Email.CONTENT_FILTER_URI
和CommonDataKinds.Phone.CONTENT_FILTER_URI
。
目录提供者应该为每个它无法识别的投影字段返回NULL,而不是抛出异常。 这样,如果将来使用新字段扩展ContactsContract,它将不会被破坏。
客户端通过提供可选的 directory=
查询参数,通过联系人提供程序与目录交互。
当联系人提供程序收到请求时,它将转换URI并将请求转发给相应的目录内容提供程序。 URI以下列方式转换:
DIRECTORY_AUTHORITY
.accountName=
and accountType=
parameters are added or replaced using the corresponding ACCOUNT_TYPE
and ACCOUNT_NAME
values.客户端应该发送目录请求到联系人提供程序,并让它转发给相应的提供程序,而不是自己构建目录提供程序URI。 这种间接级别允许Contacts Provider实施其他系统级功能和优化。 访问联系人提供程序受READ_CONTACTS权限保护,但访问目录提供程序受BIND_DIRECTORY_SEARCH保护。 此权限是在API级别17引入的,对于以前的平台版本,提供者应该执行以下检查以确保来自ContactsProvider的调用:
private boolean isCallerAllowed() { PackageManager pm = getContext().getPackageManager(); for (String packageName: pm.getPackagesForUid(Binder.getCallingUid())) { if (packageName.equals("com.android.providers.contacts")) { return true; } } return false; }
目录表是只读的,由联系人提供程序自动维护。
它总是至少有这两行:
Directory._ID
= Directory.DEFAULT
. This directory can be used to access locally stored contacts. The same can be achieved by omitting the directory=
parameter altogether. Directory.LOCAL_INVISIBLE
. 自定义目录由联系人提供程序按照以下过程发现:
<meta-data android:name="android.content.ContactDirectory" android:value="true" />
这个标签应该放置在相应的内容提供者声明中。
Directory.CONTENT_URI
query to each of the directory authorities. A directory provider must implement this query and return a list of directories. Each directory returned by the provider must have a unique combination for the ACCOUNT_NAME
and ACCOUNT_TYPE
columns (nulls are allowed). Since directory IDs are assigned automatically, the _ID field will not be part of the query projection. 联系人提供程序自动询问新安装或替换的软件包。 因此只需安装一个包含目录提供者的包就足以让该提供者注册。 提供目录提供者的包不必包含可启动的活动。
Directory表中的每一行都会自动与相应的包(apk)关联。 如果稍后卸载程序包,则会自动从联系人提供程序中删除所有相应的目录行。
当由目录提供者处理的目录列表发生变化(例如,当用户添加新的目录帐户时),目录提供者应该调用notifyDirectoryChange(ContentResolver)
来通知联系人提供者该更改。 作为响应,联系人提供程序将重新查询目录提供程序以获取新的目录列表。
目录行可以选择与现有帐户相关联(请参阅AccountManager
)。 如果稍后删除该帐户,则会自动从联系人提供程序中删除相应的目录行。
Inherited constants |
---|
From interface android.provider.BaseColumns
|
Fields |
|
---|---|
public static final Uri |
CONTENT_URI 该表格的内容://样式URI。 |
public static final Uri |
ENTERPRISE_CONTENT_URI 用于从主要和托管配置文件获取所有目录的URI。 |
Public methods |
|
---|---|
static boolean |
isEnterpriseDirectoryId(long directoryId) 如果目录ID来自企业档案中的联系人提供程序,则返回TRUE。 |
static boolean |
isRemoteDirectoryId(long directoryId) 如果它是远程存储的目录,则返回TRUE。 |
static void |
notifyDirectoryChange(ContentResolver resolver) 通知系统由特定目录提供程序处理的目录列表中的更改。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String ACCOUNT_NAME
与此目录相关联的帐户。 如果该帐户稍后被删除,它所拥有的目录将从该表中自动删除。
类型:文字
常量值:“accountName”
String CONTENT_ITEM_TYPE
CONTENT_URI
项目的MIME类型。
常量值:“vnd.android.cursor.item / contact_directory”
String CONTENT_TYPE
提供联系人目录的目录的MIME类型 CONTENT_URI
。
常量值:“vnd.android.cursor.dir / contact_directories”
String DIRECTORY_AUTHORITY
号码簿提供商的权威。 联系人提供程序将使用此权限将请求转发给目录提供程序。 目录提供商可以将此列留空 - 联系人提供商将填写它。
此API的客户端不应直接向此权限发送请求。 所有目录请求必须通过联系人提供程序进行路由。
类型:文字
常值:“权威”
String DISPLAY_NAME
可以在UI中用来表示该目录的可选名称,例如“Acme Corp”
类型:文字
常量值:“displayName”
long ENTERPRISE_DEFAULT
工作资料默认目录的_ID,表示本地存储的联系人。
常量值:1000000000(0x000000003b9aca00)
long ENTERPRISE_LOCAL_INVISIBLE
代表本地存储的不可见联系人的工作资料目录的_ID。
常量值:1000000001(0x000000003b9aca01)
String EXPORT_SUPPORT
一个EXPORT_SUPPORT_NONE
, EXPORT_SUPPORT_ANY_ACCOUNT
, EXPORT_SUPPORT_SAME_ACCOUNT_ONLY
。 这是目录对从其中导出的数据的期望。 客户必须遵守这一设置。
常数值:“exportSupport”
int EXPORT_SUPPORT_ANY_ACCOUNT
指示该目录允许其数据复制到任何联系人帐户的 EXPORT_SUPPORT
设置。
常量值:2(0x00000002)
int EXPORT_SUPPORT_NONE
一个 EXPORT_SUPPORT
设置,指示该目录不允许将任何数据从其中复制出来。
常量值:0(0x00000000)
int EXPORT_SUPPORT_SAME_ACCOUNT_ONLY
一个 EXPORT_SUPPORT
设置指示该目录允许其数据复制到只由指定的帐户 ACCOUNT_TYPE
/ ACCOUNT_NAME
。
常数值:1(0x00000001)
long LOCAL_INVISIBLE
表示本地存储的不可见联系人的目录的_ID。
常量值:1(0x0000000000000001)
String PACKAGE_NAME
拥有此目录的软件包的名称。 联系人提供程序使用包含目录提供程序的包的名称来填充它。 如果稍后卸载软件包,它所拥有的目录将自动从该表中删除。
TYPE: TEXT
常量值:“packageName”
String PHOTO_SUPPORT
一个PHOTO_SUPPORT_NONE
, PHOTO_SUPPORT_THUMBNAIL_ONLY
, PHOTO_SUPPORT_FULL
。 这是一个功能标志,指示目录支持联系人照片的程度。
常数值:“photoSupport”
int PHOTO_SUPPORT_FULL
一个 PHOTO_SUPPORT
设置,指示该目录可以生成缩略图以及全尺寸的联系人照片。
常量值:3(0x00000003)
int PHOTO_SUPPORT_FULL_SIZE_ONLY
PHOTO_SUPPORT
设置,指示该目录具有全尺寸联系人照片,但无法提供缩放缩略图。
常量值:2(0x00000002)
int PHOTO_SUPPORT_NONE
指示目录不提供任何照片的 PHOTO_SUPPORT
设置。
常量值:0(0x00000000)
int PHOTO_SUPPORT_THUMBNAIL_ONLY
PHOTO_SUPPORT
设置,指示该目录只能生成小尺寸的联系人照片缩略图。
常数值:1(0x00000001)
String SHORTCUT_SUPPORT
一个SHORTCUT_SUPPORT_NONE
, SHORTCUT_SUPPORT_DATA_ITEMS_ONLY
, SHORTCUT_SUPPORT_FULL
。 这是目录对其元素创建的快捷方式的期望。 客户必须遵守这一设置。
常数值:“shortcutSupport”
int SHORTCUT_SUPPORT_DATA_ITEMS_ONLY
一个 SHORTCUT_SUPPORT
设置,指示该目录允许为电子邮件,电话或邮政地址等数据项创建快捷方式,但不允许为整个联系人创建快捷方式。
常数值:1(0x00000001)
int SHORTCUT_SUPPORT_FULL
一个 SHORTCUT_SUPPORT
设置,指示该目录允许创建联系人快捷方式及其组成元素。
常量值:2(0x00000002)
int SHORTCUT_SUPPORT_NONE
指示该目录不允许为其联系人创建任何快捷方式的 SHORTCUT_SUPPORT
设置。
常量值:0(0x00000000)
String TYPE_RESOURCE_ID
在包 PACKAGE_NAME
的上下文中捕获为资源ID的目录类型,例如“公司目录”
TYPE:INTEGER
常量值:“typeResourceId”
Uri ENTERPRISE_CONTENT_URI
用于从主要和托管配置文件获取所有目录的URI。 它支持与CONTENT_URI
相同的语义并返回相同的列。 如果设备没有链接到当前配置文件的托管配置文件,则它的行为方式与CONTENT_URI
。 如果托管配置文件链接到当前配置文件,它将合并托管配置文件和当前配置文件的结果和返回。 注意:此查询返回管理配置文件结果之前的主要配置文件结果,并且此顺序不受排序参数的影响。
boolean isEnterpriseDirectoryId (long directoryId)
如果目录ID来自企业档案中的联系人提供程序,则返回TRUE。
Parameters | |
---|---|
directoryId |
long
|
Returns | |
---|---|
boolean |
boolean isRemoteDirectoryId (long directoryId)
如果它是远程存储的目录,则返回TRUE。
Parameters | |
---|---|
directoryId |
long
|
Returns | |
---|---|
boolean |
void notifyDirectoryChange (ContentResolver resolver)
通知系统由特定目录提供程序处理的目录列表中的更改。 联系人提供程序将转向并向目录提供程序发送一个查询以获取完整目录列表,这将取代以前的列表。
Parameters | |
---|---|
resolver |
ContentResolver
|