ContentProvider属于Android应用程序的组件之一,作为应用程序之间唯一的共享数据途径,ContentProvider主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。
一个程序可以通过实现一个ContentProvider的抽象接口,将自己的数据完全暴露出去,而且ContentProviders是以类似数据库中表的方式将数据暴露,也就是说ContentProvider就像一个“数据库”。外界获取其提供的数据,应该与从数据库中获取数据的操作基本一样,只不过要采用URI来表示外界需要访问的“数据库”。
ContentProvider是一个实现了一组用于提供其他应用程序存取数据的标准方法的类。应用程序可以在ContentProvider中执行如下操作:查询数据、修改数据、添加数据、删除数据。
ContentProvider提供了一种多应用间数据共享的方式,Android系统为一些常见的数据类型(如音乐、视频、图像、手机通迅录联系人信息等)内置了一系列的ContentProvider,这些都位于Android.provider包下。持有特定的许可,可以在自己开发的应用程序中访问这些ContentProvider。
ContentProvider提供了如下方法:(1)query:查询;(2)insert:插入;(3)update:更新;(4)delete:删除;(5)getType:得到数据类型;(6)onCreate:创建数据时调用的回调函数。
ContentProvider的使用分为如下两种方式。
(1)对于安卓系统提供的系统级的ContentProvider,我们可以直接使用。
MediaProvider:用来查询磁盘上多媒体文件。
ContactsProvider:用来查询联系人信息。
CalendarProvider:用来提供日历相关信息的查询。
BookmarkProvider:用来提供书签信息的查询。
(2)自定义ContentProvider的使用方法如下。
设计数据库的储存方式。因为ContentProvider提供的是数据,没有数据,ContentPro-vider就无法发挥作用。
定义自己的类,继承ContentProvider类,并实现基本的方法。重写构造方法,包括in-sert、delete、getType、onCreate、query、update等方法(根据需要来自行决定重写那些方法)。(www.xing528.com)
程序添加一个public static final Uri URI="content://+<包名>+URIName"静态常量,其他程序通过这个URI调用此ContentProvider类中的数据。
在AndroidManifest中注册Provider。
下面是使用ContentProvider的实例,读取系统的联系人信息,在Android Studio中新建项目ContentProvider_CCDN1。
(1)主界面的Activity文件MainActivity.java的代码如下。
(2)主布局文件是一个ListView控件,如图6-8所示。
(3)运行结果如图6-9所示。
图6-8 布局文件
图6-9 运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。