2011-09-15 63 views
29

任何人都可以解釋我關於每個用於處理日曆事件的術語嗎?什麼是uri,contentValues

  1. Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
    什麼是URI這裏,究竟是怎樣的內容,我們可以int值初始化爲0?是否可以使用默認值初始化uri

  2. Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
    什麼表示這些uri? event_urireminder_uri之間有什麼區別?

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

    第一個做什麼? values.put("calendar_id", 1);

  4. ContentResolver cr = getContentResolver();
    用的是什麼內容解析器的?有時我們寫:

    Uri u = cr.insert(event_uri, values)
    這是什麼uri?它是如何從最初兩個URI不同e.g event_urireminder_uri

    再次values.put("event_id", Long.parseLong(event.getLastPathSegment())); cr.insert(remindar_uri, values);

    它有什麼作用?

回答

53

關於問題1和問題2,A Uri是指向意義的東西的地址。在ContentProvider的情況下,Uri通常用於確定要使用哪個表。因此event_uri指向事件表,reminder_uri指向提醒表。 uris確實沒有「默認值」。

關於問題3,ContentValues本質上是一組鍵 - 值對,其中鍵表示列的列,值是要插入該列的值。所以在values.put("calendar_id", 1);的情況下,列是「CALENDAR_ID」和被插入該列的值是1

關於問題4,ContentResolver就是Android使用解決Uri s到ContentProvider秒。任何人都可以爲日曆,聯繫人等創建ContentProvider和安排有ContentProvider. ContentResolver上的insert()方法返回插入行的Uri。因此,在問題1和問題2中,那些Uri指向該表,但Uri s是分層的,因此它們可以解析爲特定的行。例如:

content://com.android.calendar/events指向事件表,但

content://com.android.calendar/events/1指向事件表中的行與ID 1

請記住,這是通常的行爲,但提供ContentProvider可以自定義uris以不同方式解析。

我強烈建議您閱讀ContentProvider docs,特別是關於Content URIs的部分。


從先前建議文檔:

在代碼的前面的線,完整的URI爲 「單詞」 表是:

content://user_dictionary/words

其中user_dictionary串是供應商的權限 ,而words字符串是表的路徑。 字符串content://方案)始終存在,並將此 標識爲內容URI。

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


} 
相關問題