30

谁能解释一下我在处理日历事件时使用的每个术语?

  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_uri和 和有什么区别reminder_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);

    它有什么作用?

4

2 回答 2

54

关于问题 1 和 2,AUri是一个指向重要事物的地址。在ContentProviders 的情况下,Uri通常用于确定要使用哪个表。所以event_uri指向事件表,reminder_uri指向提醒表。uris 确实没有“默认值”。

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

关于问题 4,这ContentResolver是 android 用来将 s 解析UriContentProviders 的。任何人都可以为日历、联系人等创建 aContentProvider并且 Android 具有s。a上的方法返回插入行的 。所以在问题 1 和 2 中,那些s 指向表但s 是分层的,因此它们可以解析到特定的行。例如:ContentProviderinsert()ContentResolverUriUriUri

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

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

请记住,这是通常的行为,但提供ContentProvider者可以自定义要以不同方式解析的 uri。

我强烈建议阅读ContentProvider 文档,尤其是关于Content URIs的部分。


从之前推荐的文档中:

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

content://user_dictionary/words

其中user_dictionary字符串是提供者的权限,words字符串是表的路径。字符串content://方案)始终存在,并将其标识为内容 URI。

于 2011-09-20T23:06:28.117 回答
0

内容值:

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


}
于 2012-09-20T09:38:30.137 回答