2011-01-13 65 views
0

这可能是一个简单的问题,但我很难直接找到答案。存储在Android项目中的内容提供者在哪里?

我已经创建使用Eclipse ADT Android的一个项目,在其自己单独的包装内容提供商。该软件包包含在整个项目的src中。当修改的AndroidManifest.xml我包括这为<application孩子>:

<provider android:name="JobProvider" 
     android:authorities="dsndata.sds2Mobile.provider.JobProvider" /> 

将使用提供商的代码是在一个单独的包也放在src

将在其中储存的最佳场所提供者?在与使用它的源代码包相同的包中?此外,什么是正确的值的android:name和android:权限?我确定它们根据提供商的存储位置而有所不同。

+0

不知道具体的答案,但我想,这可能是更好地管理内容提供​​商的代码作为一个单独的项目,特别是当它比主项目更改并不频繁。我有很多测试数据,所以我想让我的主要项目的apk文件很小,不包含它。 – Emile 2011-01-13 21:39:31

回答

1

你可以把你喜欢的地方供应商。如果您正在编写一个为您的应用程序存储数据的提供程序(仅适用于您的应用程序,并且只有您的应用程序使用该应用程序),那么只需在自己的程序包中使用应用程序代码即可。通常,'provider'是包名。

至于名字和权威,看到Manifest documentation

的android:命名实现内容提供商, 的ContentProvider的子类 的名称。这 应该是一个完整的类名 (如, “com.example.project.TransportationProvider”)。 然而,作为简写,如果名称的第一个字符 是一个时期,它 被附加到在该元件中指定的包名称 。 没有默认值。该名称必须为 指定。

安卓当局标识内容提供商 的职权范围 数据的一个或多个 URI机构的列表。多个权威机构 通过分号与 分号列出。为了避免冲突, 机关名称应使用 Java风格的命名约定(如 com.example.provider.cartoonprovider)。 通常,它是 ContentProvider子类的名称。没有 默认值。至少必须指定一个权限 。

内容管理机构是一个唯一的字符串,用于将content:// uris(uri到数据)映射到您的类。 ContentResolver使用该映射来确定如何将指定的请求(通过URI标识)提供给正确的类(您的)。因此需要一个唯一的字符串。

+0

谢谢。这是我制定的,但很高兴得到确认。 :P – Lunchbox 2011-03-08 16:23:17

0

你可以存储你的供应商在你的application.it任何地方,取决于什么是您的URI名的ContentProvider提供class.Always记得在你的应用程序的URI名称使用必须有唯一的授权和路径。

Android:name是您的Content Provider类名称及其包名 和Android:权限是您的URI内容名称,您的提供者可用。 以获得更多信息 http://marakana.com/s/post/1375/android_content_provider_tutorial

相关问题