当前位置: 主页 > 安卓开发 > android开发 >

android provider 基础介绍

泡在网上的日子 发表于 2012-09-20 23:35 次阅读 provider

Android是如何实现应用程序之间数据共享的?一个应用程序可以创建自己的数据,这个数据对该应用程序来说是私有的,外界更本看不到,也不知道数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update)
android为我们提供了ContentProvider来实现数据的共享,一个程序如果想让别的程序可以操作自己的数据,就定义自己的ContentProvider,然后在AndroidManifest.xml中注册,其他application可以通过获取ContentResolver通过Uri来操作上一程序的数据。
android中的电话本等数据就是通过ContentProvider实现数据共享的,系统中有很多已经存在的共享Uri。我们可以使用ContentResolver通过Uri来操作不同表的数据;Contacts.People.CONTENT_URI
什么是URI?
将其分为ABCD 4个部分:
A:标准前缀,用来说明一个Content Provider控制这些数据,无法改变的;"content://"
BURI的标识,它定义了是哪个Content Provider提供这些数据。对于第三方应用程序,为了保证URI标识的唯一性,它必须是一个完整的、小写的 类名。这个标识在 元素的authorities属性中说明:一般是定义该ContentProvider的包.类的名称;"content://hx.android.text.myprovider"
C:路径,不知道是不是路径,通俗的讲就是你要操作的数据库中表的名字,或者你也可以自己定义,记得在使用的时候保持一致就ok;"content://hx.android.text.myprovider/tablename"
D:如果URI中包含表示需要获取的记录的ID;则就返回该id对应的数据,如果没有ID,就表示返回全部; "content://hx.android.text.myprovider/tablename/#" #表示数据id
这里主要是说明如何创建自己的ContentProvider,这里有几个常用的类
UriMatcher:用于匹配Uri,它的用法如下:
1.首先把你需要匹配Uri路径全部给注册上,

如下://常量UriMatcher.NO_MATCH表示不匹配任何路径的返回码(-1)

UriMatcher uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //如果match()方法匹配content://com.changcheng.sqlite.provider.contactprovider/contact路径,返回匹配码为1 uriMatcher.addURI(com.changcheng.sqlite.provider.contactprovidercontact

上一篇:android 动作栏(Action Bar)
Action Bar是活动中的一种控件,用以代替传统的屏幕顶端的标题栏。默认,Action Bar包括了左侧的应用程序图标(logo),其右是活动的标题,以及Option Menu中的可选项目。Action Bar提供了多种便利特性,包括: 直接在Action Bar中显示Option Menu中的项目,
下一篇:android通过TextWatcher监测输入框中输入的内容以及输入字符个数
大家或许会遇到这样的需求,监听文本框中的文本改变,这在一些记事本应用中为了实现自动保存功能会用到。 我们可能首先会想到用onKeyDown之类的事件来监听这类事件,在早期版本中这种方式确实管用,不过到了新版的Android系统上就不那么灵了。 其实android已