Android 具有多个子表的ContentProvider的类结构
ContentProvider文档要求在AndroidManifest中为ContentProvider类创建一个条目。如果您的类支持多个子表,那么必须为每个子表声明一个CONTENT_URI常量。怎么用?除非为每个子表创建子类,否则不能这样做。为什么不拥有多个供应商 是否将子表提供程序实现为子体?对于多个子表,仍然只有一个ContentProvider类 如您所见,我对文档感到困惑。内容如下: 定义一个名为 内容URI。这就是 表示完整的内容:URI 您的内容提供商处理。你 必须为此定义唯一的字符串 价值最好的解决办法是使用 的完全限定类名 内容提供者(小写)。所以 例如,一个 TransportationProvider类可能是 定义如下: 如果提供程序有子表,还可以为每个子表定义CONTENT_URI常量。这些URI都应该具有相同的权限(因为这标识了内容提供者),并且只能通过它们的路径进行区分。例如:Android 具有多个子表的ContentProvider的类结构,android,android-contentprovider,Android,Android Contentprovider,ContentProvider文档要求在AndroidManifest中为ContentProvider类创建一个条目。如果您的类支持多个子表,那么必须为每个子表声明一个CONTENT_URI常量。怎么用?除非为每个子表创建子类,否则不能这样做。为什么不拥有多个供应商 是否将子表提供程序实现为子体?对于多个子表,仍然只有一个ContentProvider类 如您所见,我对文档感到困惑。内容如下: 定义一个名为 内容URI。这就是 表示完整的内容:URI 您的内容提供商处理。你 必须为此定义唯一的
content://com.example.codelab.transporationprovider/train
content://com.example.codelab.transporationprovider/air/domestic
content://com.example.codelab.transporationprovider/air/international
那么,我们创建了多少类来处理火车、航空/国内和航空/国际
如果您的类支持多个
子表则必须有一个
为声明的CONTENT\u URI常量
每个怎么用?除非
您可以为每个子表创建子类
那么,不要将它们全部命名为内容\u URI
。无论如何,这个名称对于第三方来说并不是非常有用,因为他们无权访问您的源代码来访问那个静态数据成员。这些文档也让我感到困惑,我甚至有点在我的一本书中鹦鹉学舌地重复他们的说明,但我正在远离这一点,并将修改我的材料以匹配它们
一个更好的地方是他们自己的内容提供商(ContactsContract
,CallLog
,等等)
您是否实现子表
作为后代的提供者?具有
多个子表,仍然有
只有一个ContentProvider类
你想要多少就有多少。您可以使用单个类或内部类(请参见
ContactsContract
)或其他任何内容来完成此操作。啊,明白了!我很惊讶地看到文档谈论内容URI,好像是通过反射或其他方式识别出来的,但我想即使这样也不可能。那么,用户如何发现内容URI的实际值呢?从外部文件?是的。你只需要告诉他们使用什么价值。Android操作系统有一个优势:每个人都可以使用它。第三方内容提供商就没那么幸运了。这还意味着您最好坚持使用您选择的任何名称,或者使用一些版本控制(例如,模式v1的原始名称,v2的不同名称)。
content://com.example.codelab.transporationprovider/train
content://com.example.codelab.transporationprovider/air/domestic
content://com.example.codelab.transporationprovider/air/international