有人可以解释一下我在处理日历活动时使用的每个术语吗?
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?它与前两个uris有何不同,例如event_uri
和reminder_uri
再次values.put("event_id", Long.parseLong(event.getLastPathSegment()));
cr.insert(remindar_uri, values);
它做了什么?
答案 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用于解析Uri
到ContentProvider
的问题。任何人都可以为日历,通讯录等创建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)
....
....
....
}