存储在Android项目中的内容提供商在哪里?

时间:2011-01-13 18:29:53

标签: android android-contentprovider

这可能是一个简单的问题,但我很难确定直接的答案。

我使用Eclipse Android ADT在项目中的单独包中创建了一个内容提供程序。此包包含在整个项目的src中。在修改AndroidManifest.xml时,我将其作为<application&gt;:

的子项包含在内
 <provider android:name="JobProvider"
      android:authorities="dsndata.sds2Mobile.provider.JobProvider" />

将使用提供程序的代码也在src

中的单独包中

哪里是存储提供商的最佳位置?在与使用它的源相同的包中?另外,android:name和android:authority的正确值是什么?我确定它们会根据提供商的存储位置而有所不同。

2 个答案:

答案 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