Share via


ContactsContract.Directory 類別

定義

目錄代表連絡人主體,例如

[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
繼承
ContactsContract.Directory
屬性

備註

目錄代表連絡人主體,例如本機連絡人、Google Apps 全域通訊清單或公司全域通訊清單。

目錄會實作為內容提供者,其中包含其唯一授權單位,以及與主要連絡人提供者相同的 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>

Directory 資料表是唯讀的,而且會自動由連絡人提供者維護。

它一律至少有這兩個數據列: < ul >< li > 本機目錄。 Directory#_ID Directory._ID = Directory#DEFAULT Directory.DEFAULT 它有 。 此目錄可用來存取本機儲存的連絡人。 您可以藉由完全省 directory= 略 參數來達成相同。 </li li ><> 本機不可見連絡人。 對應的目錄識別碼為 Directory#LOCAL_INVISIBLE Directory.LOCAL_INVISIBLE 。 </li >< /ul>

依照此程式,連絡人提供者會探索自訂目錄: < ul >< li > 它會尋找所有已安裝的內容提供者,其中繼資料會識別為 AndroidManifest.xml 中的目錄提供者: &lt;meta-data android:name="android.content.ContactDirectory" android:value="true" /&gt;

此標籤應該放在對應的內容提供者宣告內。

</li li ><> Then Contacts Provider 會將查詢傳送 Directory#CONTENT_URI Directory.CONTENT_URI 給每個目錄授權單位。 目錄提供者必須實作此查詢,並傳回目錄清單。 提供者傳回的每個目錄都必須有唯一的 和 #ACCOUNT_TYPE 資料行組合 #ACCOUNT_NAME , (null 允許) 。 由於會自動指派目錄識別碼,因此_ID欄位不會是查詢投影的一部分。 </li li ><> Contacts Provider 會將從所有目錄提供者收到的目錄清單編譯成一個,將每個個別目錄指派一個全域唯一識別碼,並將所有目錄記錄儲存在 Directory 資料表中。 </li >< /ul >< /p>

連絡人提供者會自動詢問新安裝的或取代的套件。 因此,只要安裝包含目錄提供者的套件就足以讓該提供者註冊。 提供目錄提供者的套件不需要包含可啟動的活動。

Directory 資料表中的每個資料列都會自動與對應的套件相關聯, (apk) 。 如果稍後卸載套件,所有對應的目錄資料列都會從連絡人提供者自動移除。

當使用者新增新的目錄帳戶) 時,目錄提供者所處理的目錄清單 (變更時,目錄提供者應該呼叫 #notifyDirectoryChange 來通知連絡人提供者變更。 回應中,連絡人提供者會重新查詢目錄提供者,以取得新的目錄清單。

目錄資料列可以選擇性地與現有的帳戶相關聯, (請參閱 android.accounts.AccountManager) 。 如果稍後移除帳戶,對應目錄資料列會自動從連絡人提供者中移除。

android.provider.ContactsContract.Directory JAVA 檔。

此頁面的部分是根據 原始碼專案所建立和共用的工作進行修改,並根據中所述的詞彙使用。

欄位

AccountName

與此目錄相關聯的帳戶。

AccountType

與此目錄相關聯的帳戶類型。

CallerPackageParamKey

傳遞至目錄提供者的查詢參數,指出已發出查詢要求的用戶端套件名稱。

ContentItemType

專案的 MIME 類型 #CONTENT_URI

ContentType

MIME 類型, #CONTENT_URI 提供連絡人目錄的目錄。

Default

預設目錄_ID,代表本機儲存的連絡人。

DirectoryAuthority

目錄提供者的授權單位。

DisplayName

可在 UI 中使用的選擇性名稱來表示此目錄,例如。

EnterpriseDefault

_ID Managed 設定檔預設目錄,代表本機儲存的連絡人。

EnterpriseLocalInvisible

_ID Managed 設定檔目錄,代表本機儲存的不可見連絡人。

ExportSupport

其中 #EXPORT_SUPPORT_NONE 一個 、 #EXPORT_SUPPORT_ANY_ACCOUNT#EXPORT_SUPPORT_SAME_ACCOUNT_ONLY

ExportSupportAnyAccount
已淘汰.

指出 #EXPORT_SUPPORT 目錄允許其資料複製到任何連絡人帳戶的設定。

ExportSupportNone
已淘汰.

指出 #EXPORT_SUPPORT 目錄不允許從中複製任何資料的設定。

ExportSupportSameAccountOnly
已淘汰.

#EXPORT_SUPPORT設定,指出目錄只允許其資料複製到 所 #ACCOUNT_TYPE/#ACCOUNT_NAME 指定的帳號。

LocalInvisible

_ID目錄,代表本機儲存的不可見連絡人。

PackageName

擁有此目錄的封裝名稱。

PhotoSupport

其中 #PHOTO_SUPPORT_NONE 一個 、 #PHOTO_SUPPORT_THUMBNAIL_ONLY#PHOTO_SUPPORT_FULL

PhotoSupportFull
已淘汰.

指出 #PHOTO_SUPPORT 目錄可以產生縮圖以及全尺寸連絡人相片的設定。

PhotoSupportFullSizeOnly
已淘汰.

表示 #PHOTO_SUPPORT 目錄具有全尺寸連絡人相片但無法提供縮放縮圖的設定。

PhotoSupportNone
已淘汰.

指出 #PHOTO_SUPPORT 目錄未提供任何相片的設定。

PhotoSupportThumbnailOnly
已淘汰.

指出 #PHOTO_SUPPORT 目錄只能產生小型連絡人相片縮圖的設定。

ShortcutSupport

其中 #SHORTCUT_SUPPORT_NONE 一個 、 #SHORTCUT_SUPPORT_DATA_ITEMS_ONLY#SHORTCUT_SUPPORT_FULL

ShortcutSupportDataItemsOnly
已淘汰.

設定 #SHORTCUT_SUPPORT ,指出目錄允許建立資料項目的快捷方式,例如電子郵件、電話或郵寄地址,但不能建立整個連絡人。

ShortcutSupportFull
已淘汰.

指出 #SHORTCUT_SUPPORT 目錄允許建立連絡人的快捷方式及其組成元素的設定。

ShortcutSupportNone
已淘汰.

#SHORTCUT_SUPPORT指出目錄不允許為其連絡人建立的任何快捷方式的設定。

TypeResourceId

在封裝 #PACKAGE_NAME 的內容中,擷取為資源識別碼的目錄類型 e.

屬性

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
ContentUri

此資料表的 content:// 樣式 URI。

EnterpriseContentUri

用來從呼叫使用者和連結至該目錄的 Managed 設定檔取得所有目錄的 URI。

Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
JniIdentityHashCode

目錄代表連絡人主體,例如

(繼承來源 Object)
JniPeerMembers

目錄代表連絡人主體,例如

PeerReference

目錄代表連絡人主體,例如

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

(繼承來源 Object)
ThresholdType

此 API 支援 Mono for Android 基礎結構,並不適合直接從您的程式碼使用。

(繼承來源 Object)

方法

Clone()

建立並傳回這個 物件的複本。

(繼承來源 Object)
Dispose()

目錄代表連絡人主體,例如

(繼承來源 Object)
Dispose(Boolean)

目錄代表連絡人主體,例如

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
IsEnterpriseDirectoryId(Int64)

如果目錄識別碼來自企業設定檔上的連絡人提供者,則傳回 TRUE。

IsRemoteDirectoryId(Int64)

如果它是遠端預存目錄,則傳回 TRUE。

JavaFinalize()

當垃圾收集判斷物件沒有其他參考時,由物件上的垃圾收集行程呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件的監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
NotifyDirectoryChange(ContentResolver)

通知系統特定目錄提供者所處理之目錄清單中的變更。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
ToArray<T>()

目錄代表連絡人主體,例如

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

目錄代表連絡人主體,例如

(繼承來源 Object)
Wait()

讓目前的執行緒等到喚醒為止,通常是藉由 < em > notified < /em > 或 < em > interrupted < /em > 來喚醒。

(繼承來源 Object)
Wait(Int64)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的執行緒等到喚醒為止,通常是 < 透過 em > notified < /em 或 em > interrupted < /em >> ,或 < 直到經過一定數量的即時為止。

(繼承來源 Object)

明確介面實作

IJavaPeerable.Disposed()

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.Finalized()

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

目錄代表連絡人主體,例如

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

目錄代表連絡人主體,例如

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

目錄代表連絡人主體,例如

GetJniTypeName(IJavaPeerable)

目錄代表連絡人主體,例如

適用於