ContactsContract.Directory クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ディレクトリは、連絡先コーパス (例: ) を表します。
[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 グローバル アドレス一覧、企業グローバル アドレス一覧など) を表します。
ディレクトリは、一意の権限を持ち、メイン連絡先プロバイダーと同じ API を持つコンテンツ プロバイダーとして実装されます。 ただし、すべてのディレクトリ プロバイダーがこのコントラクトを完全に実装するとは想定されません。 ディレクトリ プロバイダーに特定の要求の実装がない場合は、UnsupportedOperationException をスローする必要があります。
ディレクトリの最も重要なユース ケースは検索です。 ディレクトリ プロバイダーは、少なくとも ContactsContract.Contacts#CONTENT_FILTER_URI Contacts.CONTENT_FILTER_URI
をサポートする必要があります。 ディレクトリ プロバイダーが電子メールと電話のルックアップ機能に参加する場合は、 と CommonDataKinds.Phone#CONTENT_FILTER_URI CommonDataKinds.Phone.CONTENT_FILTER_URI
も実装CommonDataKinds.Email#CONTENT_FILTER_URI CommonDataKinds.Email.CONTENT_FILTER_URI
する必要があります。
ディレクトリ プロバイダーは、例外をスローするのではなく、認識されないすべてのプロジェクション フィールドに対して NULL を返す必要があります。 この方法は、ContactsContract が将来新しいフィールドで拡張された場合に破損することはありません。
クライアントは、オプション directory=
のクエリ パラメーターを指定することで、連絡先プロバイダーを介してディレクトリと対話します。
連絡先プロバイダーは、要求を受信すると、URI を変換し、対応するディレクトリ コンテンツ プロバイダーに要求を転送します。 URI は次の方法で変換されます。 <ul><li>URI 機関は、対応する #DIRECTORY_AUTHORITY
に置き換えられます。</li li><>と accountName=
accountType=
パラメーターは、対応する #ACCOUNT_TYPE
と #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>
ディレクトリ テーブルは読み取り専用であり、連絡先プロバイダーによって自動的に管理されます。
常に、少なくとも次の 2 つの行があります。 <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><>Contacts Provider は、すべてのディレクトリ プロバイダーから受信したディレクトリ リストを 1 つにコンパイルし、各ディレクトリにグローバルに一意の ID を割り当て、すべてのディレクトリ レコードをディレクトリ テーブルに格納します。 </li></ul></p>
連絡先プロバイダーは、新しくインストールまたは置換されたパッケージを自動的に問い合わせします。 したがって、ディレクトリ プロバイダーを含むパッケージをインストールするだけで、そのプロバイダーを登録するだけで十分です。 ディレクトリ プロバイダーを提供するパッケージには、起動可能なアクティビティを含める必要はありません。
ディレクトリ テーブル内のすべての行は、対応するパッケージ (apk) に自動的に関連付けられます。 パッケージが後でアンインストールされた場合、対応するすべてのディレクトリ行が連絡先プロバイダーから自動的に削除されます。
ディレクトリ プロバイダーによって処理されるディレクトリの一覧が変更された場合 (ユーザーが新しいディレクトリ アカウントを追加した場合など)、ディレクトリ プロバイダーは を呼び出 #notifyDirectoryChange
して連絡先プロバイダーに変更を通知する必要があります。 これに対して、連絡先プロバイダーはディレクトリ プロバイダーに再クエリを実行して、ディレクトリの新しいリストを取得します。
ディレクトリ行は、必要に応じて既存のアカウントに関連付けることができます (「」を参照)。android.accounts.AccountManager
後でアカウントが削除されると、対応するディレクトリ行が連絡先プロバイダーから自動的に削除されます。
の android.provider.ContactsContract.Directory
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。
フィールド
AccountName |
このディレクトリが関連付けられているアカウント。 |
AccountType |
このディレクトリが関連付けられているアカウントの種類。 |
CallerPackageParamKey |
クエリ要求を行ったクライアント パッケージ名を示すディレクトリ プロバイダーに渡されるクエリ パラメーター。 |
ContentItemType |
|
ContentType |
連絡先ディレクトリの |
Default |
ローカルに格納されている連絡先を表す既定のディレクトリの_ID。 |
DirectoryAuthority |
ディレクトリ プロバイダーの権限。 |
DisplayName |
このディレクトリを表すために UI で使用できる省略可能な名前 (例: )。 |
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 |
ディレクトリは、連絡先コーパス (例: ) を表します。 (継承元 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) |
ディレクトリ ID がエンタープライズ プロファイルの連絡先プロバイダーからの場合は TRUE を返します。 |
IsRemoteDirectoryId(Int64) |
リモート格納ディレクトリの場合は TRUE を返します。 |
JavaFinalize() |
オブジェクトへの参照がなくなったとガベージ コレクションが判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。 (継承元 Object) |
Notify() |
このオブジェクトのモニターで待機している 1 つのスレッドを起動します。 (継承元 Object) |
NotifyAll() |
このオブジェクトのモニターで待機しているすべてのスレッドを起動します。 (継承元 Object) |
NotifyDirectoryChange(ContentResolver) |
特定のディレクトリ プロバイダーによって処理されるディレクトリの一覧の変更をシステムに通知します。 |
SetHandle(IntPtr, JniHandleOwnership) |
Handle プロパティを設定します。 (継承元 Object) |
ToArray<T>() |
ディレクトリは、連絡先コーパス (例: ) を表します。 (継承元 Object) |
ToString() |
オブジェクトの文字列形式を返します。 (継承元 Object) |
UnregisterFromRuntime() |
ディレクトリは、連絡先コーパス (例: ) を表します。 (継承元 Object) |
Wait() |
現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。> (継承元 Object) |
Wait(Int64) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。 (継承元 Object) |
Wait(Int64, Int32) |
現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</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) |
ディレクトリは、連絡先コーパス (例: ) を表します。 |