Quelqu'un peut-il m'expliquer chaque terme que j'ai utilisé pour travailler avec des événements de calendrier?
Uri event_uri = Uri.parse("content://com.Android.calendar/" + "events");
Qu'est-ce que uri ici, quel est réellement le contenu, car nous pouvons initialiser la valeur int à 0? Est-ce
possible d'initialiser un uri avec une valeur par défaut?
Uri reminder_uri = Uri.parse("content://com.Android.calendar/" + "reminders");
Que signifie ces uri? Quelles sont les différences entre event_uri
Et reminder_uri
?
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", str);
values.put("description", m_strDescription);
Que fait le premier? values.put("calendar_id", 1);
ContentResolver cr = getContentResolver();
À quoi sert le résolveur de contenu? Parfois, nous écrivons:
Uri u = cr.insert(event_uri, values)
Qu'est-ce que cet uri? En quoi diffère-t-il des deux premiers uris, par exemple event_uri
Et reminder_uri
Encore une fois values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);
Qu'est ce que ça fait?
Concernant les questions 1 et 2, A Uri
est une adresse qui pointe vers quelque chose de significatif. Dans le cas de ContentProvider
s, le Uri
est généralement utilisé pour déterminer la table à utiliser. Ainsi event_uri
Pointe vers la table des événements et reminder_uri
Pointe vers la table des rappels. Il n'y a vraiment pas de "valeur par défaut" pour les uris.
Concernant la question 3, le ContentValues
est essentiellement un ensemble de paires clé-valeur, où la clé représente la colonne de la table et la valeur est la valeur à insérer dans cette colonne. Ainsi, dans le cas de values.put("calendar_id", 1);
, la colonne est "calendar_id" et la valeur insérée pour cette colonne est 1.
Concernant la question 4, le ContentResolver
est ce que Android utilise pour résoudre Uri
s en ContentProvider
s. Tout le monde peut créer un ContentProvider
et Android a ContentProvider
s pour le calendrier, les contacts, etc. La méthode insert()
sur un ContentResolver
renvoie le Uri
de la ligne insérée. Ainsi, aux questions 1 et 2, ces Uri
s pointaient vers le tableau mais Uri
s sont hiérarchiques afin de pouvoir se résoudre à une ligne spécifique. Par exemple:
content://com.Android.calendar/events
Pointe vers la table des événements, mais
content://com.Android.calendar/events/1
Pointe vers la ligne du tableau des événements avec l'ID 1.
Gardez à l'esprit que c'est le comportement habituel, mais la fourniture de ContentProvider
peut personnaliser les uris à résoudre différemment.
Je recommanderais fortement de lire ContentProvider docs , en particulier la section sur Content URIs .
De la documentation précédemment recommandée:
Dans les lignes de code précédentes, l'URI complet de la table "mots" est:
content://user_dictionary/words
où la chaîne
user_dictionary
est l'autorité du fournisseur et la chaînewords
est le chemin de la table. La chaînecontent://
(Le schéma ) est toujours présente et l'identifie comme un URI de contenu.
ContentValues:
public final class
ContentValues
extends Object
implements Parcelable have public methods
like: String getAsString(String KEY) , void put(Sring KEY, String value)
e.g.
public void createEntry(String name, String number){
ContentValues cval = new ContentValues();
cval.put(KEY_NAME, name); // KEY_NAME is key just like parameter in put(String key)
....
....
....
}