繁体   English   中英

内容提供商存储在Android项目中的什么位置?

[英]Where is a content provider stored in an Android project?

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

我已经使用Eclipse Android ADT在项目中的单独包中创建了内容提供程序。 该软件包包含在整个项目的src中。 修改AndroidManifest.xml时,我将其作为<application >的子级包含:

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

将使用提供程序的代码也位于src中的单独软件包中

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

您可以将提供程序放置在任意位置。 如果您正在编写一个存储用于您的应用程序的数据(仅用于您的应用程序,并且只有您的应用程序使用它的数据)的提供程序,那么最简单的做法就是将应用程序代码打包在自己的程序包中。 通常,“提供者”是程序包名称。

至于名称和权限,请参阅清单文档

android:name实现内容提供者的类的名称,它是ContentProvider的子类。 这应该是完全合格的类名(例如“ com.example.project.TransportationProvider”)。 但是,作为简写,如果名称的第一个字符是句点,则将其附加到元素中指定的包名称之后。 没有默认值。 必须指定名称。

android:authorities一个或多个URI权限的列表,这些权限用于标识内容提供者权限范围内的数据。 通过使用分号分隔名称来列出多个权限。 为避免冲突,授权机构名称应使用Java样式的命名约定(例如com.example.provider.cartoonprovider)。 通常,它是ContentProvider子类的名称。 没有默认值。 必须至少指定一个权限。

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

您可以将提供程序存储在应用程序中的任何位置。这取决于ContentProvider类中提供的URI名称。始终记住,在应用程序中使用的URI名称必须具有唯一的权限和路径。

Android:name是具有包名称的Content Provider类名称,而Android:authorities是您的Provider可用的URI内容名称。 有关更多信息,请http://marakana.com/s/post/1375/android_content_provider_tutorial

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM