【问题标题】:what are uri, contentValues什么是 uri,contentValues
【发布时间】:2011-11-17 14:15:08
【问题描述】:
谁能解释一下我在处理日历事件时使用的每个术语?
Uri event_uri = Uri.parse("content://com.android.calendar/" + "events");
这里的 uri 是什么,实际上是什么内容,因为我们可以将 int 值初始化为 0?是吗
可以用默认值初始化 uri 吗?
Uri reminder_uri = Uri.parse("content://com.android.calendar/" + "reminders");
这些uri是什么意思? event_uri和reminder_uri有什么区别?
ContentValues values = new ContentValues();
values.put("calendar_id", 1);
values.put("title", str);
values.put("description", m_strDescription);
第一个是做什么的? values.put("calendar_id", 1);
-
ContentResolver cr = getContentResolver();
内容解析器有什么用?有时我们会写:
Uri u = cr.insert(event_uri, values)
这是什么uri?它与前两个 uri 有何不同,例如 event_uri 和 reminder_uri
再次values.put("event_id", Long.parseLong(event.getLastPathSegment()));
cr.insert(remindar_uri, values);
它有什么作用?
【问题讨论】:
标签:
android
uri
android-contentresolver
【解决方案1】:
关于问题 1 和 2,Uri 是一个指向重要事物的地址。在ContentProviders 的情况下,Uri 通常用于确定使用哪个表。所以event_uri 指向事件表,reminder_uri 指向提醒表。 uris 确实没有“默认值”。
关于问题3,ContentValues本质上是一组键值对,其中键代表表的列,值是要插入该列的值。所以对于values.put("calendar_id", 1);,列是“calendar_id”,为该列插入的值为1。
关于问题 4,ContentResolver 是 android 用来将 Uris 解析为 ContentProviders 的。任何人都可以创建ContentProvider,Android 有用于日历、联系人等的ContentProviders。ContentResolver 上的insert() 方法返回插入行的Uri。所以在问题 1 和 2 中,那些 Uris 指向表,但 Uris 是分层的,因此它们可以解析到特定行。例如:
content://com.android.calendar/events 指向事件表,但是
content://com.android.calendar/events/1 指向事件表中 id 为 1 的行。
请记住,这是通常的行为,但提供 ContentProvider 可以自定义要以不同方式解析的 uri。
我强烈建议阅读ContentProvider docs,尤其是Content URIs 部分。
来自之前推荐的文档:
在前面的代码行中,“words”表的完整 URI 是:
content://user_dictionary/words
user_dictionary 字符串在哪里
提供者的权限,words 字符串是表的路径。这
字符串content://(scheme)始终存在,并标识此
作为内容 URI。
【解决方案2】:
内容值:
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)
....
....
....
}