2011-09-15 28 views
29

¿Alguien puede explicarme acerca de cada término que he usado para trabajar con eventos de calendario?¿Qué son uri, contentValues ​​

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    ¿Cuál es uri aquí, lo que en realidad es el contenido, como se puede inicializar el valor int a 0? ¿Es
    posible inicializar un uri con un valor predeterminado?

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    ¿Qué significa estos uri? ¿Cuáles son las diferencias entre event_uri y reminder_uri?

  3. ContentValues values = new ContentValues();
    values.put("calendar_id", 1);
    values.put("title", str);
    values.put("description", m_strDescription);

    ¿Qué hace el primero? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    ¿Cuál es el uso del sistema de resolución contenido? A veces escribimos:

    Uri u = cr.insert(event_uri, values)
    ¿Qué es esto? ¿Cómo se diferencia de las dos primeras URIs por ejemplo event_uri y reminder_uri

    Una vez más values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    ¿Qué hacer?

Respuesta

53

En cuanto a las preguntas 1 y 2, A Uri es una dirección que apunta a algo de importancia. En el caso de ContentProvider s, el Uri se usa generalmente para determinar qué tabla usar. Por lo tanto, event_uri apunta a la tabla de eventos y reminder_uri apunta a la tabla de recordatorios. Realmente no hay un "valor predeterminado" para uris.

En relación con la pregunta 3, el ContentValues es esencialmente un conjunto de pares clave-valor, donde la clave representa la columna de la tabla y el valor es el valor que se insertará en esa columna. Así, en el caso de values.put("calendar_id", 1);, la columna es "calendar_id" y el valor que se inserta para esa columna es 1.

cuanto a la pregunta 4, el ContentResolver es lo que utiliza Android para resolver Uri s a ContentProvider s. Cualquiera puede crear un ContentProvider y Android tiene ContentProvider s para el Calendario, Contactos, etc. El método insert() en un ContentResolver devuelve el Uri de la fila insertada. Por lo tanto, en las preguntas 1 y 2, esos Uri s apuntan a la tabla, pero Uri s son jerárquicos, por lo que se pueden resolver en una fila específica. Por ejemplo:

content://com.android.calendar/events puntos a la tabla de eventos, pero

content://com.android.calendar/events/1 apunta a la fila en la tabla de eventos con el ID 1.

que tener en cuenta, que este es el comportamiento habitual, pero la prestación ContentProvider puede personalizar los uris para que se resuelvan de manera diferente.

Recomiendo leer el ContentProvider docs, especialmente la sección en Content URIs.


De la documentación previamente recomendada:

En las anteriores líneas de código, el URI completo para la tabla de "palabras" es:

content://user_dictionary/words

donde la cadena user_dictionary es la autoridad del proveedor y words cadena es la ruta de la tabla. La cadena content:// (el esquema ) siempre está presente e identifica este como un URI de contenido.

0

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


}