2011-09-15 26 views
29

Qualcuno può spiegarmi su ogni termine che ho usato per lavorare con gli eventi del calendario?cosa sono uri, contentValues ​​

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    Qual è uri qui, ciò che in realtà è il contenuto, in quanto siamo in grado di inizializzare il valore int a 0? È
    possibile inizializzare un uri con un valore predefinito?

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    Cosa significa questi uri? Quali sono le differenze tra event_uri e reminder_uri?

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

    Cosa fa il primo? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    Qual è l'uso del resolver contenuti? A volte scriviamo:

    Uri u = cr.insert(event_uri, values)
    Che cos'è questo uri? In cosa è diverso dai primi due URI per esempio event_uri e reminder_uri

    Anche in questo caso values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    Che cosa fa?

risposta

53

Per quanto riguarda le domande 1 e 2, A Uri è un indirizzo che punta a qualcosa di significativo. Nel caso di ContentProvider s, lo Uri viene in genere utilizzato per determinare quale tabella utilizzare. Quindi i punti event_uri puntano alla tabella degli eventi e i punti reminder_uri alla tabella dei promemoria. Non c'è davvero nessun "valore predefinito" per uris.

Riguardo alla domanda 3, lo ContentValues è essenzialmente un insieme di coppie chiave-valore, in cui la chiave rappresenta la colonna per la tabella e il valore è il valore da inserire in tale colonna. Quindi, nel caso di values.put("calendar_id", 1);, la colonna è "calendar_id" e il valore di essere inserito per quella colonna è 1.

Per quanto riguarda la domanda 4, il ContentResolver è quello che utilizza Android per risolvere Uri s per ContentProvider s. Chiunque può creare un numero ContentProvider e Android dispone di ContentProvider s per Calendario, Contatti, ecc. Il metodo insert() su un ContentResolver restituisce il Uri della riga inserita. Pertanto, nelle domande 1 e 2, quelle Uri hanno indicato la tabella ma Uri s sono gerarchiche in modo che possano essere risolte in una riga specifica. Ad esempio:

content://com.android.calendar/events punti alla tabella eventi, ma

content://com.android.calendar/events/1 punti alla riga della tabella eventi con id 1.

Tenere presente, che questo è il comportamento abituale, ma la fornitura ContentProvider può personalizzare l'uris da risolvere in modo diverso.

Consiglio vivamente di leggere lo ContentProvider docs, in particolare la sezione su Content URIs.


Dalla documentazione precedentemente raccomandato:

nelle righe precedenti di codice, il pieno URI per la tabella "parole" è:

content://user_dictionary/words

dove la stringa user_dictionary è l'autorizzazione del provider e la stringa è il percorso della tabella. La stringa content:// (lo schema ) è sempre presente e identifica questo come URI di contenuto.

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


}