ContentProvider doc说要在AndroidManifest中为您的ContentProvider类创建一个条目。如果您的类支持多个子表,则必须为每个子表声明一个CONTENT_URI常量。怎么样?除非为每个子表进行子类化,否则不能这样做。为什么不只有多个提供商?
您是否将子表提供程序实现为后代?有多个子表,仍然只有一个ContentProvider类?
正如您所看到的,我对文档感到困惑。它写着:
定义名为的公共静态最终Uri CONTENT_URI。这是字符串 表示完整内容:URI 您的内容提供商处理。您 必须为此定义一个唯一的字符串 值。最好的解决方案是使用 完全限定的类名 内容提供者(小写)。所以, 例如,a的URI TransportationProvider类可以 定义如下:
public static final Uri CONTENT_URI =
Uri.parse("content://com.example.codelab.transporationprovider");
如果提供者有子表,也为每个子表定义CONTENT_URI常量。这些URI应该都具有相同的权限(因为它标识了内容提供者),并且只能通过它们的路径来区分。例如:
content://com.example.codelab.transporationprovider/train
content://com.example.codelab.transporationprovider/air/domestic
content://com.example.codelab.transporationprovider/air/international
那么,我们为了处理火车,空中/国内和国际/国际航空而创造了多少个班级?
答案 0 :(得分:3)
如果您的班级支持多个 子表然后必须有一个 声明的CONTENT_URI常量 每。怎么样?除非你不能这样做 你是每个子表的子类。
然后不要将它们全部命名为CONTENT_URI
。无论如何,该名称对第三方来说并不十分有用,因为他们无法访问您的源代码来访问该静态数据成员。文档也让我感到困惑,我甚至在我的一本书中唠叨了他们的指示,但我正在远离那些,并将改进我的材料以匹配。
更好的地方是他们自己的内容提供商(ContactsContract
,CallLog
等)。
您是否实施了子表 提供者作为后代?同 多个子表,还有 只有一个ContentProvider类?
拥有您想要的任意数量。您可以使用单个类或内部类(请参阅ContactsContract
)或其他任何内容来执行此操作。