什么是uri,contentValues

时间:2011-09-15 05:58:05

标签: android uri android-contentresolver

有人可以解释一下我在处理日历活动时使用的每个术语吗?

  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?它与前两个uris有何不同,例如event_urireminder_uri

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

    它做了什么?

2 个答案:

答案 0 :(得分:54)

关于问题1和问题2,A Uri是指向具有重要意义的地址。在ContentProvider s的情况下,Uri通常用于确定要使用的表。因此event_uri指向事件表,reminder_uri指向提醒表。 uris确实没有“默认值”。

关于问题3,ContentValues本质上是一组键值对,其中键表示表的列,值是要插入该列的值。因此,对于values.put("calendar_id", 1);,列为“calendar_id”,并且为该列插入的值为1.

关于问题4,ContentResolver是Android用于解析UriContentProvider的问题。任何人都可以为日历,通讯录等创建ContentProvider和Android ContentProvider .. insert()上的ContentResolver方法会返回Uri插入行。所以在问题1和问题2中,那些Uri指向了表,但Uri是分层的,因此它们可以解析为特定的行。例如:

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

content://com.android.calendar/events/1指向事件表中id为1的行。

请注意,这是通常的行为,但提供ContentProvider可以自定义uris以不同的方式解决。

我强烈建议您阅读ContentProvider docs,尤其是Content URIs上的部分。


从之前推荐的文档:

  

在前面的代码行中,“words”表的完整URI是:

     

content://user_dictionary/words

     

user_dictionary字符串所在的位置   提供者的权限,words字符串是表的路径。该   字符串content://方案)始终存在,并标识出来   作为内容URI。

答案 1 :(得分: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)
    ....
    ....
    ....


}