【安卓篇】Android四大组件●Content Provider组件介绍与生命周期
来源:互联网 发布:海岛奇兵震爆数据 编辑:程序博客网 时间:2024/05/21 14:25
其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中获取或存入数据.(相当于在应用外包了一层壳),
只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中.
它的好处:统一数据访问方式。
android系统自带的内容提供者(顶级的表示数据库名,非顶级的都是表名)这些内容提供者在SDK文档的android.provider Java包中都有介绍。见:http://developer.android.com/reference/android/provider/package-summary.html
├────Browser
├────CallLog
├────Contacts
│ ├────Groups
│ ├────People
│ ├────Phones
│ └────Photos
├────Images
│ └────Thumbnails
├────MediaStore
│ ├────Albums
│ ├────Artists
│ ├────Audio
│ ├────Genres
│ └────Playlists
├────Settings
└────Video
CallLog:地址和接收到的电话信息
Contact.People.Phones:存储电话号码
Setting.System:系统设置和偏好设置
使用Content Provider对外共享数据的步骤
1、继承ContentProvider类并根据需求重写以下方法:
复制代码public boolean onCreate();//处理初始化操作 /** * 插入数据到内容提供者(允许其他应用向你的应用中插入数据时重写) * @param uri * @param initialValues 插入的数据 * @return */ public Uri insert(Uri uri, ContentValues initialValues);/** * 从内容提供者中删除数据(允许其他应用删除你应用的数据时重写) * @param uri * @param selection 条件语句 * @param selectionArgs 参数 * @return */ public int delete(Uri uri, String selection, String[] selectionArgs); /** * 更新内容提供者已存在的数据(允许其他应用更新你应用的数据时重写) * @param uri * @param values 更新的数据 * @param selection 条件语句 * @param selectionArgs 参数 * @return */ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs); /** * 返回数据给调用者(允许其他应用从你的应用中获取数据时重写) * @param uri * @param projection 列名 * @param selection 条件语句 * @param selectionArgs 参数 * @param sortOrder 排序 * @return */ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) ; /** * 用于返回当前Uri所代表数据的MIME类型 * 如果操作的数据为集合类型(多条数据),那么返回的类型字符串应该为vnd.android.cursor.dir/开头 * 例如要得到所有person记录的Uri为content://com.bravestarr.provider.personprovider/person, *那么返回的MIME类型字符串应该为"vnd.android.cursor.dir/person" * 如果操作的数据为单一数据,那么返回的类型字符串应该为vnd.android.cursor.item/开头 * 例如要得到id为10的person记录的Uri为content://com.bravestarr.provider.personprovider/person/10, *那么返回的MIME类型字符串应该为"vnd.android.cursor.item/person" * @param uri */ public String getType(Uri uri)
这些方法中的Uri参数,得到后需要进行解析然后做对应处理,Uri表示要操作的数据,包含两部分信息:
1.需要操作的contentprovider
2.对contentprovider中的什么数据进行操作,一个Uri格式:
结构头://authorities(域名)/路径(要操作的数据,根据业务而定)content://com.bravestarr.provider.personprovider/person/10
说明:contentprovider的结构头已经由android规定为content://
authorities用于唯一标识这个contentprovider程序,外部调用者可以根据这个找到他。
路径表示我们要操作的数据,路径的构建根据业务而定.路径格式如下:
要操作person表行号为10的记录,可以这样构建/person/10
要操作person表的所有记录,可以这样构建/person
2、在AndroidManifest.xml中使用<provider>对ContentProvider进行配置注册(内容提供者注册它自己就像网站注册域名),ContentProvider采用authoritie(原意授权,可理解为域名)作为唯一标识,方便其他应用能找到。
<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <!-- authorities属性命名建议:公司名.provider.SomeProvider--> <provider android:name=".PersonProvider" android:authorities="com.bravestarr.provider.personprovider"/>...<span style="font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;"></application></span>
- 【安卓篇】Android四大组件●Content Provider组件介绍与生命周期
- 【安卓篇】Android四大组件●Activity组件介绍与生命周期
- Android四大组件之Content Provider
- Android四大基本组件之Content Provider
- Android四大组件之Content Provider
- Android四大组件之Content Provider
- Android 四大组件之 Content Provider
- Android 四大组件之Content provider使用
- Android四大组件之自定义Content Provider
- Android 四大组件之Content Provider
- android:四大组件之一content provider
- Android四大组件之Content Provider
- Android四大组件之Content Provider
- Android四大组件之Content Provider
- 【android学习】四大组件-Content Provider
- android的四大组件之Content Provider
- Android四大基本组件介绍与生命周期
- Android四大基本组件介绍与生命周期
- 【CH Round #48 - Streaming #3(NOIP模拟赛Day1)】 题解
- 双WaitForMultipleObjects机制
- 欢聚时代Linux下的主动防御
- ZOJ 3019 Puzzle
- Undefined symbols for architecture i386或者armv7: “_OBJC_CLASS_$_XXX
- 【安卓篇】Android四大组件●Content Provider组件介绍与生命周期
- 13. Java类集 Part 1(类集、Collection接口、List接口、Set接口、SortedSet接口、集合的输出) ----- 学习笔记
- ZOJ 3656 Bit Magic (2-sat 可行性判定)
- Linux下EPoll通信模型简析
- UVa273 - Jack Straws(线段相交,floyd_warshall)
- Android蓝牙开发浅析
- 各种语言在线编译器
- 编辑文章 - 博客频道 - CSDN.NET
- iOS:新特性二(iOS5.1/xcode4.4)--LLVM4.0