这可能是一个简单的问题,但我很难确定直接的答案。
我使用Eclipse Android ADT在项目中的单独包中创建了一个内容提供程序。此包包含在整个项目的src中。在修改AndroidManifest.xml时,我将其作为<application
&gt;:
<provider android:name="JobProvider"
android:authorities="dsndata.sds2Mobile.provider.JobProvider" />
将使用提供程序的代码也在src
中的单独包中哪里是存储提供商的最佳位置?在与使用它的源相同的包中?另外,android:name和android:authority的正确值是什么?我确定它们会根据提供商的存储位置而有所不同。
答案 0 :(得分:1)
您可以将提供者放在任何您喜欢的地方。如果您正在编写一个为您的应用程序存储数据的提供程序(并且仅针对您的应用程序,并且只有您的应用程序使用它),那么最简单的方法就是将应用程序代码放在自己的程序包中。通常,'provider'是包名。
至于名称和权限,请参阅Manifest documentation:
android:name 该类的名称 实现内容提供者, ContentProvider的子类。这个 应该是一个完全限定的类名 (如, “com.example.project.TransportationProvider”)。 但是,作为速记,如果是第一个 名字的字符是一个句号,它 附加到包名称 在元素中指定。 没有默认值。名字必须是 指定。
android:authorities 一个或一个列表 更多识别的URI权限 数据属于内容范围 供应商。多个权威机构 列出他们的名字与 分号。为避免冲突, 权威名称应该使用 Java风格的命名约定(例如 com.example.provider.cartoonprovider)。 通常,它是的名称 ContentProvider子类。没有 默认。至少有一个当局必须 指定。
内容权限是一个唯一的字符串,用于将内容:// uris(uri到数据)映射到您的类。 ContentResolver使用该映射来标识如何将给定的请求(通过URI标识)提供给正确的类(您的)。因此需要一个独特的字符串。
答案 1 :(得分:0)
您可以将您的提供商存储在您的应用程序的任何位置。具体取决于您的URI名称在ContentProvider类中提供的内容。请记住,您的应用程序中使用的URI名称必须具有唯一的权限和路径。
Android:name是您的Content Provider类名及其包名 和Android:authority是您的提供商可用的URI内容名称。 了解更多信息 http://marakana.com/s/post/1375/android_content_provider_tutorial