web-dev-qa-db-fra.com

quels sont uri, contentValues

Quelqu'un peut-il m'expliquer chaque terme que j'ai utilisé pour travailler avec des événements de calendrier?

  1. 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?

  2. 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?

  3. 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);

  4. 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?

30
AndroidDev

Concernant les questions 1 et 2, A Uri est une adresse qui pointe vers quelque chose de significatif. Dans le cas de ContentProviders, 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 Uris en ContentProviders. Tout le monde peut créer un ContentProvider et Android a ContentProviders 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 Uris pointaient vers le tableau mais Uris 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îne words est le chemin de la table. La chaîne content:// (Le schéma ) est toujours présente et l'identifie comme un URI de contenu.

54
Noel

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)
    ....
    ....
    ....


}
0
Faakhir