ContactsContract.Directory 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
目录表示联系人料料库,e.
[Android.Runtime.Register("android/provider/ContactsContract$Directory", DoNotGenerateAcw=true)]
public sealed class ContactsContract.Directory : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$Directory", DoNotGenerateAcw=true)>]
type ContactsContract.Directory = class
inherit Object
- 继承
- 属性
注解
目录表示联系人料料库,例如本地联系人、Google Apps 全局地址列表或公司全局地址列表。
目录作为内容提供程序实现,具有其唯一的权威和与 main 联系人提供程序相同的 API。 但是,并不期望每个目录提供程序都会完全实现此协定。 如果目录提供程序没有特定请求的实现,则应引发 UnsupportedOperationException。
目录最重要的用例是搜索。 目录提供程序应至少 ContactsContract.Contacts#CONTENT_FILTER_URI Contacts.CONTENT_FILTER_URI
支持 。 如果目录提供程序想要参与电子邮件和电话查找功能,则它还应实现 CommonDataKinds.Email#CONTENT_FILTER_URI CommonDataKinds.Email.CONTENT_FILTER_URI
和 CommonDataKinds.Phone#CONTENT_FILTER_URI CommonDataKinds.Phone.CONTENT_FILTER_URI
。
目录提供程序应为其无法识别的每个投影字段返回 NULL,而不是引发异常。 这样,如果将来使用新字段扩展 ContactsContract,它就不会中断。
客户端通过提供可选的 directory=
查询参数,通过联系人提供程序与目录交互。
当联系人提供程序收到请求时,它会转换 URI 并将请求转发到相应的目录内容提供程序。 URI 按以下方式转换: <ul<>li>URI 颁发机构将替换为相应的 #DIRECTORY_AUTHORITY
。</li><li>使用accountName=
相应的 #ACCOUNT_TYPE
和 accountType=
值添加或替换 和 #ACCOUNT_NAME
参数。</li></ul>
客户端应将目录请求发送到联系人提供程序,并让其将其转发到相应的提供程序,而不是自行构造目录提供程序 URI。 此间接级别允许联系人提供程序实现其他系统级功能和优化。 对联系人提供程序的访问受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;
}
</p>
目录表是只读的,由联系人提供程序自动维护。
它始终至少有这两行: <ul><li> 本地目录。 Directory#_ID Directory._ID
= Directory#DEFAULT Directory.DEFAULT
它具有 。 此目录可用于访问本地存储的联系人。 也可以通过完全省略 directory=
参数来实现相同的目的。 </li><li> 本地不可见联系人。 相应的目录 ID 为 Directory#LOCAL_INVISIBLE Directory.LOCAL_INVISIBLE
。 </li></ul>
自定义目录由联系人提供程序按照此过程发现: <ul><li>它查找所有已安装的内容提供程序,元数据将它们标识为 AndroidManifest.xml 中的目录提供程序: <meta-data android:name="android.content.ContactDirectory" android:value="true" />
此标记应放置在相应的内容提供程序声明中。
</li><li> 然后联系人提供程序将查询发送到 Directory#CONTENT_URI Directory.CONTENT_URI
每个目录颁发机构。 目录提供程序必须实现此查询并返回目录列表。 提供程序返回的每个目录必须对 和 #ACCOUNT_TYPE
列具有唯一的组合#ACCOUNT_NAME
, () 允许 null。 由于目录 ID 是自动分配的,因此_ID字段不会是查询投影的一部分。 </li><li>联系人提供程序将从所有目录提供程序接收的目录列表编译为一个目录,为每个目录分配全局唯一 ID,并将所有目录记录存储在 Directory 表中。 </li></ul></p>
联系人提供程序会自动询问新安装或替换的包。 因此,只需安装包含目录提供程序的包即可注册该提供程序。 提供目录提供程序的包不必包含可启动活动。
目录表中的每一行会自动与相应的包关联 (apk) 。 如果稍后卸载包,则会自动从联系人提供程序中删除所有相应的目录行。
当目录提供程序处理的目录列表更改 (例如,当用户) 添加新的 Directory 帐户时,目录提供程序应调用 #notifyDirectoryChange
以通知联系人提供程序更改。 作为响应,联系人提供程序将重新查询目录提供程序以获取新的目录列表。
可以选择将目录行与现有帐户相关联, (请参阅 android.accounts.AccountManager
) 。 如果以后删除了帐户,则会自动从联系人提供程序中删除相应的目录行。
的 android.provider.ContactsContract.Directory
Java 文档。
此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。
字段
AccountName |
与此目录关联的帐户。 |
AccountType |
与此目录关联的帐户类型。 |
CallerPackageParamKey |
传递给目录提供程序的查询参数,指示发出查询请求的客户端包名称。 |
ContentItemType |
项的 |
ContentType |
提供联系人目录的 MIME 类型 |
Default |
_ID表示本地存储联系人的默认目录。 |
DirectoryAuthority |
目录提供程序的颁发机构。 |
DisplayName |
一个可选名称,可用于在 UI 中表示此目录,e。 |
EnterpriseDefault |
_ID托管配置文件默认目录,表示本地存储的联系人。 |
EnterpriseLocalInvisible |
_ID表示本地存储的不可见联系人的托管配置文件目录。 |
ExportSupport |
、 |
ExportSupportAnyAccount |
已过时.
一个 |
ExportSupportNone |
已过时.
一个 |
ExportSupportSameAccountOnly |
已过时.
一个 |
LocalInvisible |
_ID表示本地存储的不可见联系人的目录。 |
PackageName |
拥有此目录的包的名称。 |
PhotoSupport |
、 |
PhotoSupportFull |
已过时.
指示 |
PhotoSupportFullSizeOnly |
已过时.
一个 |
PhotoSupportNone |
已过时.
指示 |
PhotoSupportThumbnailOnly |
已过时.
一个 |
ShortcutSupport |
、 |
ShortcutSupportDataItemsOnly |
已过时.
一个 |
ShortcutSupportFull |
已过时.
一个 |
ShortcutSupportNone |
已过时.
指示 |
TypeResourceId |
在包 |
属性
Class |
返回此 |
ContentUri |
此表的 content:// 样式 URI。 |
EnterpriseContentUri |
用于从调用用户和链接到它的托管配置文件获取所有目录的 URI。 |
Handle |
基础 Android 实例的句柄。 (继承自 Object) |
JniIdentityHashCode |
目录表示联系人料料库,e. (继承自 Object) |
JniPeerMembers |
目录表示联系人料料库,e. |
PeerReference |
目录表示联系人料料库,e. (继承自 Object) |
ThresholdClass |
此 API 支持 Mono for Android 基础结构,不应直接从代码使用。 (继承自 Object) |
ThresholdType |
此 API 支持 Mono for Android 基础结构,不应直接从代码使用。 (继承自 Object) |
方法
Clone() |
创建并返回此对象的副本。 (继承自 Object) |
Dispose() |
目录表示联系人料料库,e. (继承自 Object) |
Dispose(Boolean) |
目录表示联系人料料库,e. (继承自 Object) |
Equals(Object) |
指示其他某个对象是否“等于”此对象。 (继承自 Object) |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
IsEnterpriseDirectoryId(Int64) |
如果目录 ID 来自企业配置文件上的联系人提供程序,则返回 TRUE。 |
IsRemoteDirectoryId(Int64) |
如果它是远程存储目录,则返回 TRUE。 |
JavaFinalize() |
当垃圾回收确定不再引用对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
NotifyDirectoryChange(ContentResolver) |
通知系统特定目录提供程序处理的目录列表中的更改。 |
SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
ToArray<T>() |
目录表示联系人料料库,e. (继承自 Object) |
ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
UnregisterFromRuntime() |
目录表示联系人料料库,e. (继承自 Object) |
Wait() |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<> (继承自 Object) |
Wait(Int64) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
Wait(Int64, Int32) |
导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<> (继承自 Object) |
显式接口实现
IJavaPeerable.Disposed() |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.DisposeUnlessReferenced() |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.Finalized() |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.JniManagedPeerState |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
目录表示联系人料料库,e. (继承自 Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
目录表示联系人料料库,e. (继承自 Object) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
目录表示联系人料料库,e. |
GetJniTypeName(IJavaPeerable) |
目录表示联系人料料库,e. |