Android数据共享之ContentProvider总结_android项目报告总结

2020-02-27 其他工作总结 下载本文

Android数据共享之ContentProvider总结由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“android项目报告总结”。

Content Provider 由上一节内容,我们了解到Adroid的数据都是私有的,那么对于像通讯录之类,多个APP(拨号、通话、短消息…)都需要共享使用,该怎么实现呢?

答案就是ContentProvider。

概述:

ContentProvider是Android平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。

Android为常用的数据类型(图片,音视频,通讯录)提供了大量的ContentProvider,它们被定义在android.provider包下面。

操作模型:

ContentProvider类:

定义在android.content包下面,主要数据存取类,提供了常用的数据操作接口 • delete(): 删除数据集

• insert():添加数据集

• qurey():查询数据集

• update():更新数据集

• onCreate():初始化底层数据集和建立数据连接等工作

• getType():返回指定URI的MIME数据类型,ContentResolver类:

ContentProvider是实际操作数据库的方法,客户端通过ContentResolver实现,ContentResolver和ContentProvider提供了对应的方法,诸如insert(), delete(), query()和update()之类的方法。我们间接的通过ContentResolver的方法来操作ContentProvider。

Uri介绍

ContentProvider 通过URI对象共享数据;Uri代表了要操作的数据,Uri主要包含了两部分信息:

1》需要操作的ContentProvider

2》对ContentProvider中的什么数据进行操作

Uri是一个通用资源标志符,将其分为A,B,C,D 4个部分:

A:无法改变的标准前缀,包括;“content://”、“tel://”等。当前缀是“content://”时,说明通过一个Content Provider控制这些数据;

B:URI的标识,它通过authorities属性声明,用于定义了是哪个ContentProvider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的类名。例如:

“content:// com.test.contentproviderdemo ”;

C:路径,可以近似的理解为需要操作的数据库中表的名字,如:“content:// com.test.contentproviderdemo/people”中的people

D:如果URI中包含表示需要获取的记录的ID,则就返回该id对应的数据,如果没有ID,就表示返回全部;

将字符串转成Uri,Uri uri = Uri.parse(“content:// com.test.contentproviderdemo/people ”)

跟Uri相关的两个操作类:

A、public cla UriMatcher //匹配

//注册匹配Uri路径

//常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码

UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);//添加需要匹配uri,如果匹配就会返回匹配码

//如果match()方法匹配content:// com.test.contentproviderdemo/people路径,返回匹配码为1 sMatcher.addURI(“com.test.contentproviderdemo”, “people”, 1);

//如果match()方法匹配content://com.test.contentproviderdemo/people/2路径,返回匹配码为2 sMatcher.addURI(“com.test.contentproviderdemo”, “people /#”, 2);//#号为通配符

switch(sMatcher.match(Uri.parse(“content:// com.test.contentproviderdemo/people/10”))){

case 1

break;case 2

break;default://不匹配

break;}

B、public cla ContentUris //获取ID

withAppendedId(uri, id)用于为路径加上ID部分:

Uri uri = Uri.parse(“content:// com.test.contentproviderdemo/people ”)Uri resultUri = ContentUris.withAppendedId(uri, 10);parseId(uri)方法 用于从路径中获取ID部分:

Uri uri = Uri.parse(“content:// com.test.contentproviderdemo/people /10”)long personid = ContentUris.parseId(uri);//获取的结果为:10

主要步骤:

1.创建保存数据的文件或者数据库。

2.在当前应用程序中定义一个ContentProvider,重载相关操作接口。如: public cla PeopleProvider extends ContentProvider{ public boolean onCreate()public Uri insert(Uri uri, ContentValues values)public int delete(Uri uri, String selection, String[] selectionArgs)public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)} public String getType(Uri uri)3.在当前应用程序的AndroidManifest.xml中注册此ContentProvider

android:authorities = “com.test.contentproviderdemo”/> 4.其他应用程序通过ContentResolver和Uri来获取此ContentProvider的数据。

ContentResolver resolver = getContentResolver();5.通过注册registerContentObserver监听ContentProvider的数据变化;

ContentProvider完整实例:

ContentResolverDemo.zipContentProviderDemo.zip

ContentProviderDemo是一个无界面的示例,仅提供一个ContentProvider组件,供其他应用程序进行数据交换底层使用SQLite数据库,支持数据的添加、删除、更新和查询等基本操作

ContentResolverDemo是使用ContentProvider的示例,自身不具有任何数据存储功能,仅是通过URI访问ContentProviderDemo示例提供的ContentProvider。

《Android数据共享之ContentProvider总结.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
Android数据共享之ContentProvider总结
点击下载文档
相关专题 android项目报告总结 数据 Android ContentProvider android项目报告总结 数据 Android ContentProvider
[其他工作总结]相关推荐
    [其他工作总结]热门文章
      下载全文