ContactsContract.Data Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Constantes pour la table de données, qui contient des points de données liés à un contact brut.
[Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)]
public sealed class ContactsContract.Data : Java.Lang.Object
[<Android.Runtime.Register("android/provider/ContactsContract$Data", DoNotGenerateAcw=true)>]
type ContactsContract.Data = class
inherit Object
- Héritage
- Attributs
Remarques
Constantes pour la table de données, qui contient des points de données liés à un contact brut. Chaque ligne de la table de données est généralement utilisée pour stocker un seul élément d’informations de contact (tel qu’un numéro de téléphone) et ses métadonnées associées (par exemple, s’il s’agit d’un numéro de travail ou de domicile).
<Types< de données h3>/h3>
Les données sont une table générique qui peut contenir n’importe quel type de données de contact. Le type de données stockées dans une ligne donnée est spécifié par la valeur de #MIMETYPE
la ligne, qui détermine la signification des colonnes #DATA1
génériques à travers #DATA15
. Par exemple, si le type de données est CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE
, la colonne #DATA1
stocke le numéro de téléphone, mais si le type de données est CommonDataKinds.Email Email.CONTENT_ITEM_TYPE
, stocke #DATA1
l’adresse e-mail. Les adaptateurs et applications de synchronisation peuvent introduire leurs propres types de données.
ContactsContract définit un petit nombre de types de données prédéfinis, par exemple CommonDataKinds.Phone
, etc CommonDataKinds.Email
. En guise de commodité, ces classes définissent des alias spécifiques au type de données pour DATA1, etc. Par exemple, CommonDataKinds.Phone Phone.NUMBER
est identique à ContactsContract.Data Data.DATA1
.
#DATA1
est une colonne indexée et doit être utilisée pour l’élément de données qui est censé être le plus fréquemment utilisé dans les sélections de requête. Par exemple, dans le cas d’une ligne représentant des adresses #DATA1
e-mail doit probablement être utilisée pour l’adresse e-mail elle-même, tandis qu’elle #DATA2
peut être utilisée pour des informations auxiliaires telles que le type d’adresse e-mail.
Par convention, #DATA15
il est utilisé pour stocker des objets blob (données binaires).
L’adaptateur de synchronisation pour un type de compte donné doit gérer correctement chaque type de données utilisé dans les contacts bruts correspondants. Sinon, cela peut entraîner des données perdues ou endommagées.
De même, vous devez vous abstenir d’introduire de nouveaux types de données pour les types de comptes d’un autre tiers. Par exemple, si vous ajoutez une ligne de données pour « chanson préférée » à un contact brut appartenant à un compte Google, il n’est pas synchronisé avec le serveur, car l’adaptateur de synchronisation Google ne sait pas comment gérer ce type de données. Par conséquent, de nouveaux types de données sont généralement introduits avec de nouveaux types de comptes, c’est-à-dire de nouveaux adaptateurs de synchronisation.
<Opérations< batch h3>/h3>
Les lignes de données peuvent être insérées/mises à jour/supprimées à l’aide des méthodes traditionnelles ContentResolver#insert
, ContentResolver#update
mais ContentResolver#delete
le mécanisme plus récent basé sur un lot de ContentProviderOperation
données s’avère être un meilleur choix dans presque tous les cas. Toutes les opérations d’un lot sont exécutées dans une transaction unique, ce qui garantit que l’état côté téléphone et côté serveur d’un contact brut est toujours cohérent. En outre, l’approche basée sur les lots est beaucoup plus efficace : non seulement les opérations de base de données sont-elles plus rapides lorsqu’elles sont exécutées dans une seule transaction, mais l’envoi d’un lot de commandes au fournisseur de contenu enregistre beaucoup de temps sur le basculement de contexte entre votre processus et le processus dans lequel le fournisseur de contenu s’exécute.
Le côté inverse de l’utilisation d’opérations par lots est qu’un lot volumineux peut verrouiller la base de données pendant une longue période empêchant d’autres applications d’accéder aux données et de provoquer potentiellement des ANR (« Boîtes de dialogue Application non réponse ».
Pour éviter ces verrous de la base de données, veillez à insérer des « points de rendement » dans le lot. Un point de rendement indique au fournisseur de contenu qu’avant d’exécuter l’opération suivante, il peut valider les modifications qui ont déjà été apportées, donner à d’autres demandes, ouvrir une autre transaction et poursuivre le traitement des opérations. Un point de rendement ne valide pas automatiquement la transaction, mais uniquement s’il existe une autre requête en attente sur la base de données. Normalement, un adaptateur de synchronisation doit insérer un point de rendement au début de chaque séquence d’opérations de contact brute dans le lot. Consultez l’article ContentProviderOperation.Builder#withYieldAllowed(boolean)
.
<h3>Operations</h3><dl dt><><b>Insert</b></dt dd><>
Une ligne de données individuelle peut être insérée à l’aide de la méthode traditionnelle ContentResolver#insert(Uri, ContentValues)
. Plusieurs lignes doivent toujours être insérées en tant que lot.
Exemple d’insertion traditionnelle :
ContentValues values = new ContentValues();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, "1-800-GOOG-411");
values.put(Phone.TYPE, Phone.TYPE_CUSTOM);
values.put(Phone.LABEL, "free directory assistance");
Uri dataUri = getContentResolver().insert(Data.CONTENT_URI, values);
La même opération effectuée à l’aide de ContentProviderOperations :
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValue(Data.RAW_CONTACT_ID, rawContactId)
.withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
.withValue(Phone.NUMBER, "1-800-GOOG-411")
.withValue(Phone.TYPE, Phone.TYPE_CUSTOM)
.withValue(Phone.LABEL, "free directory assistance")
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
</p><dt><b>Update</b></dt><dd>
Tout comme avec l’insertion, la mise à jour peut être effectuée de manière incrémentielle ou en tant que lot, le mode batch étant la méthode préférée :
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
.withValue(Email.DATA, "somebody@android.com")
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
</p></dd><dt><b>Delete</b></dt dd><>
Tout comme avec l’insertion et la mise à jour, la suppression peut être effectuée à l’aide de la ContentResolver#delete
méthode ou à l’aide d’un ContentProviderOperation :
ArrayList<ContentProviderOperation> ops =
new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newDelete(Data.CONTENT_URI)
.withSelection(Data._ID + "=?", new String[]{String.valueOf(dataId)})
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
</p></dd><dt><b>Query</b></dt dd><>
<dl><dt>Recherche de toutes les données d’un type donné pour un contact</dt dt><donné>
Cursor c = getContentResolver().query(Data.CONTENT_URI,
new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
Data.CONTACT_ID + "=?" + " AND "
+ Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
new String[] {String.valueOf(contactId)}, null);
</p>
</dd><dt>Recherche de toutes les données d’un type donné pour un contact< brut/dt dd><donné>
Cursor c = getContentResolver().query(Data.CONTENT_URI,
new String[] {Data._ID, Phone.NUMBER, Phone.TYPE, Phone.LABEL},
Data.RAW_CONTACT_ID + "=?" + " AND "
+ Data.MIMETYPE + "='" + Phone.CONTENT_ITEM_TYPE + "'",
new String[] {String.valueOf(rawContactId)}, null);
</dd><dt>La recherche de toutes les données pour un contact< brut donné/dt><dd> adaptateurs de synchronisation souhaite lire toutes les lignes de données d’un contact brut ainsi que le contact brut lui-même. Pour cela, vous devez utiliser le RawContactsEntity
. Voir aussi RawContacts
. </dd></dl></p></dd></dl><h2>Columns</h2>
De nombreuses colonnes sont disponibles via une Data#CONTENT_URI
requête. Pour des performances optimales, vous devez spécifier explicitement une projection sur uniquement les colonnes dont vous avez besoin.
<table class="jd-sumtable"><tr><th colspan='4'Data<>/th<>/tr tr<>><td style="width : 7em ; »>long</td td><style="width : 20em ; »>#_ID
</td td><style="width : 5em ; »>ID de ligne td en lecture seule</td<>>. L’adaptateur de synchronisation doit essayer de conserver les ID de ligne pendant les mises à jour. En d’autres termes, il serait judicieux de supprimer et de réinsérer une ligne de données. Un adaptateur de synchronisation doit toujours effectuer une mise à jour à la place.</td>/tr tr><><td>String</td td><>#MIMETYPE
</td td><>read/write-once</td td><<>
Type MIME de l’élément représenté par cette ligne. Exemples de types MIME courants : <ul><li<>CommonDataKinds.StructuredName StructuredName.CONTENT_ITEM_TYPE
/li<>li<CommonDataKinds.Phone Phone.CONTENT_ITEM_TYPE
>/li<><CommonDataKinds.Email Email.CONTENT_ITEM_TYPE
>/li li/>>CommonDataKinds.Organization Organization.CONTENT_ITEM_TYPE
><<CommonDataKinds.Photo Photo.CONTENT_ITEM_TYPE
><<li li/li li/>CommonDataKinds.Im Im.CONTENT_ITEM_TYPE
<<>li li/li li/><<CommonDataKinds.Nickname Nickname.CONTENT_ITEM_TYPE
>><CommonDataKinds.Note Note.CONTENT_ITEM_TYPE
<>li li/><>CommonDataKinds.StructuredPostal StructuredPostal.CONTENT_ITEM_TYPE
<><>CommonDataKinds.GroupMembership GroupMembership.CONTENT_ITEM_TYPE
<><>CommonDataKinds.Website Website.CONTENT_ITEM_TYPE
<><>CommonDataKinds.Event Event.CONTENT_ITEM_TYPE
<><li><CommonDataKinds.Relation Relation.CONTENT_ITEM_TYPE
/li>>CommonDataKinds.SipAddress SipAddress.CONTENT_ITEM_TYPE
<</li/ul><>
</td></tr tr<>tr><td>long</td<>td<>>td<#RAW_CONTACT_ID
> read/write-once</td td>><Td L’ID de la ligne dans la RawContacts
table à laquelle ces données appartiennent.</td></tr tr><<>tr int<>/td>><td<>td><#IS_PRIMARY
read/write</td td td><td>Indique si il s’agit de l’entrée primaire de son type pour le contact brut auquel il appartient. « 1 » si true, « 0 » si false. </td></tr tr><><td>int</td<>>td<>td><#IS_SUPER_PRIMARY
read/write</td><td>Indique si il s’agit de l’entrée primaire de son type pour le contact agrégé auquel il appartient. Tout enregistrement de données qui est « super principal » doit également être « principal ». Par exemple, l’entrée super-primaire peut être interprétée comme la valeur de contact par défaut de son type (par exemple, le numéro de téléphone par défaut à utiliser pour le contact).</td>/tr tr><><td>int</td td><>#DATA_VERSION
</td>><read-only</td>><La version de cet enregistrement de données.< Chaque fois que la ligne de données change la version, elle monte. Cette valeur augmente de façon monotonique.</td>/tr tr><td><>Any type</td td>#DATA13
#DATA14
<<><#DATA12
><>#DATA11
#DATA10
><#DATA9
><#DATA8
><#DATA6
>#DATA7
<<#DATA5
#DATA15
>><<><<>#DATA4
#DATA3
><#DATA2
>#DATA1
>< br<>td td<>read>/write</td><<>
Colonnes de données génériques. La signification de chaque colonne est déterminée par le #MIMETYPE
. Par convention, #DATA15
il est utilisé pour stocker des objets blob (données binaires).
Les colonnes de données dont la signification n’est pas explicitement définie pour un MIMETYPE donné ne doivent pas être utilisées. Il n’existe aucune garantie que n’importe quel adaptateur de synchronisation les conserve. Les adaptateurs de synchronisation eux-mêmes ne doivent pas utiliser ces colonnes non plus, mais doivent à la place utiliser #SYNC1
-#SYNC4
.
</td>/tr tr><td><>Any type</td td>#SYNC1
><<>#SYNC2
<br br>#SYNC4
#SYNC3
><</td td><read>/write</td td td><>generic columns for use by sync adapters.< Par exemple, une ligne photo peut stocker l’URL de l’image dans SYNC1, un état (non chargé, chargé, chargé, erreur) dans SYNC2, le numéro de version côté serveur dans SYNC3 et le code d’erreur dans SYNC4.</td></tr></table>
Certaines colonnes de la mise à jour d’état associée la plus récente sont également disponibles via une jointure implicite.
<table class="jd-sumtable"><tr><th colspan='4'Join> with<StatusUpdates
/th<>/tr tr<>><td style="width : 7em ; »>int</td td><style="width : 20em ; »>#PRESENCE
</td td><style="width : 5em ; »>État de présence de messagerie instantanée td en lecture seule</td><>lié à cette ligne de données. Comparez avec #CONTACT_PRESENCE
, qui contient la présence du contact sur toutes les lignes de messagerie instantanée. Consultez StatusUpdates
les définitions d’état individuelles. Le fournisseur peut choisir de ne pas stocker cette valeur dans le stockage persistant. L’attente est que l’état de présence sera mis à jour régulièrement. </td>/tr tr>><<td>String</td td><><#STATUS
/td td>><read-only</td td>><dernière mise à jour d’état liée à cette ligne de données.<</td></tr tr><><tr td>long</td>><#STATUS_TIMESTAMP
>><< read-only</td td td<>>Temps absolu en millisecondes lorsque l’état le plus récent a été inséré/mis à jour pour cette ligne de données.</td>/tr tr>><<td>String</td td><>#STATUS_RES_PACKAGE
</td>><td read-only</td><>Le package contenant des ressources pour cet état : étiquette et icône.<</td>/tr tr><<>td>< long/td><td>#STATUS_LABEL
</td><>td read-only</td td td>><L’ID de ressource de l’étiquette décrivant la source de mise à jour d’état liée à cette ligne de données.< Cette ressource est limitée par le #STATUS_RES_PACKAGE
.</td>/tr tr>><<tr td>long</td<>td><#STATUS_ICON
/td>><td read-only</td td><>Td L’ID de ressource de l’icône pour la source de la mise à jour d’état liée à cette ligne de données.< Cette ressource est limitée par le #STATUS_RES_PACKAGE
.</td></tr></table>
Certaines colonnes du contact brut associé sont également disponibles via une jointure implicite. Les autres colonnes sont exclues comme inintéressantes dans ce contexte.
<table class="jd-sumtable"><tr><th colspan='4'Join> with<ContactsContract.RawContacts
/th<>/tr tr<>><td style="width : 7em ; »>long</td td><style="width : 20em ; »>#CONTACT_ID
</td td><style="width : 5em ; »>read-only</td td>><L’ID de la ligne dans la Contacts
table à laquelle ces données appartiennent.</td>/tr tr>><<td>int</td td><>#AGGREGATION_MODE
</td td><>read-only</td td td<>>See .< RawContacts
</td>/tr tr>><<td>int</td td><>#DELETED
</td td><>read-only</td td td<>>See .< RawContacts
</td></tr></table>
La colonne ID de la table ContactsContract.Contacts
de contacts agrégée associée est disponible via la jointure implicite à la RawContacts
table, voir ci-dessus. Les colonnes restantes de cette table sont également disponibles via une jointure implicite. Cela facilite la recherche par la valeur d’un élément de données unique, tel que l’adresse e-mail.
<table class="jd-sumtable"><tr><th colspan='4'Join> with<ContactsContract.Contacts
/th<>/tr tr<>><td style="width : 7em ; »>String</td td><style="width : 20em ; »>#LOOKUP_KEY
</td td><style="width : 5em ; »>read-only</>><td See<ContactsContract.Contacts
/td></tr tr><><td>string</td<>td<#DISPLAY_NAME
> td read-only</><>td><ContactsContract.Contacts
>< see /td<>/tr tr<>>><td long</td#PHOTO_ID
<<>> td/td td><>read-only</td see .<><>ContactsContract.Contacts
/td>/tr tr>><<td>int</td td><>#IN_VISIBLE_GROUP
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr>><<td>int</td td><>#HAS_PHONE_NUMBER
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr>><<td>int</td td><>#STARRED
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr><><td>String</td td><>#CUSTOM_RINGTONE
</td td><>read-only</td td td<>>see .< ContactsContract.Contacts
</td>/tr tr>><<td>int</td td><>#SEND_TO_VOICEMAIL
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr>><<td>int</td td><>#CONTACT_PRESENCE
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr><><td>String</td td><>#CONTACT_STATUS
</td td><>read-only</td td td<>>see .< ContactsContract.Contacts
</td>/tr tr><><td>long</td td><>#CONTACT_STATUS_TIMESTAMP
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr><><td>String</td td><>#CONTACT_STATUS_RES_PACKAGE
</td td><>read-only</td td td<>>see .< ContactsContract.Contacts
</td>/tr tr><><td>long</td td><>#CONTACT_STATUS_LABEL
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td>/tr tr><><td>long</td td><>#CONTACT_STATUS_ICON
</td td><>read-only</td td td<>>See .< ContactsContract.Contacts
</td></tr></table>
Documentation Java pour android.provider.ContactsContract.Data
.
Les parties de cette page sont des modifications basées sur le travail créé et partagé par le projet Android Open Source et utilisés en fonction des termes décrits dans la licence d’attribution Creative Commons 2.5.
Champs
ContentType |
Type MIME des résultats de |
ExtraAddressBookIndex |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |
ExtraAddressBookIndexCounts |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |
ExtraAddressBookIndexTitles |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |
VisibleContactsOnly |
Paramètre booléen pour |
Propriétés
Class |
Retourne la classe runtime de ce |
ContentUri |
URI de style content:// pour cette table, qui demande un répertoire de lignes de données correspondant aux critères de sélection. |
Handle |
Handle de l’instance Android sous-jacente. (Hérité de Object) |
JniIdentityHashCode |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
JniPeerMembers |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |
PeerReference |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
ThresholdClass |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
ThresholdType |
Cette API prend en charge l’infrastructure Mono pour Android et n’est pas destinée à être utilisée directement à partir de votre code. (Hérité de Object) |
Méthodes
Clone() |
Crée et retourne une copie de cet objet. (Hérité de Object) |
Dispose() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
Dispose(Boolean) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
Equals(Object) |
Indique si un autre objet est « égal à » celui-ci. (Hérité de Object) |
GetContactLookupUri(ContentResolver, Uri) |
Générez un |
GetHashCode() |
Retourne une valeur de code de hachage pour l'objet. (Hérité de Object) |
JavaFinalize() |
Appelé par le garbage collector sur un objet lorsque le garbage collection détermine qu’il n’y a plus de références à l’objet. (Hérité de Object) |
Notify() |
Réveille un thread unique qui attend le moniteur de cet objet. (Hérité de Object) |
NotifyAll() |
Réveille tous les threads qui attendent le moniteur de cet objet. (Hérité de Object) |
SetHandle(IntPtr, JniHandleOwnership) |
Définit la propriété Handle. (Hérité de Object) |
ToArray<T>() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
ToString() |
Retourne une représentation de chaîne de l'objet. (Hérité de Object) |
UnregisterFromRuntime() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
Wait() |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti par em ou> <em>interrompu</em>.<> (Hérité de Object) |
Wait(Int64, Int32) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Wait(Int64) |
Provoque l’attente du thread actuel jusqu’à ce qu’il soit réveillé, généralement en étant <averti< par> em>ou <em>interrompu/em>,< ou jusqu’à ce qu’une certaine quantité de temps réel s’est écoulée. (Hérité de Object) |
Implémentations d’interfaces explicites
IJavaPeerable.Disposed() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.DisposeUnlessReferenced() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.Finalized() |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.JniManagedPeerState |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
IJavaPeerable.SetPeerReference(JniObjectReference) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. (Hérité de Object) |
Méthodes d’extension
JavaCast<TResult>(IJavaObject) |
Effectue une conversion de type vérifiée par le runtime Android. |
JavaCast<TResult>(IJavaObject) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |
GetJniTypeName(IJavaPeerable) |
Constantes pour la table de données, qui contient des points de données liés à un contact brut. |