Content Providers详细使用方法总结:

作用:提供了应用程序之间的共享数据的方法。

提供了数据共享的一个唯一借口对象,即ContentResolver,在全局的Application(每个Application中必然有一个(至少一个)这样的ContentReslover对象)中的Context中获取一个ContentResolver的对象,ContentResolver cr = getContentResolver();然后就可以运用ContentResolver的中的方法获取需要的数据,并进行插入删除更新等操作。

任何一种ContentProvider只有一个实例。但是它可以和许多不同搞程序和进程中的ContentResolver对象进行交互。进程间的交互由ContentResolver和ContentProvider来处理。

你需要定义一个ContentProvider的子类来将你的数据提供给别人. 理论上你需要定义6个方法:

query()

insert()

update()

delete()

getType()

onCreate()

query()方法必须返回一个Cursor对象, 该对象能够遍历被请求的数据。Cursor本身是一个接口,但是android提供了许多已经定义好的Cursor对象供你使用。例如, SQLiteCursor可以遍历SQLite数据库中存储的数据. 你可以使用SQLiteDatabase类的query()方法来取得Cursor对象。有其它的Cursor实现 -- 例如MatrixCursor -- 用来读取不存在数据库中的数据。 query()和managedQuery()方法会更进一步细化查询条件:

返回的数据列的名称。传入null则返回所有的列。 否则, 只返回列出的那些列。 所有的内置content provider为它们的列都定义了名字。 例如 android.provider.Contacts.Phones类为如前所述的电话表定义了每一列的名称 -- _ID,NUMBER, NUMBER_KEY,NAME等等。

一个用来指示返回哪些行的filter, 按照SQL WHERE的语法格式(不含WHERE关键字本身). 传入null值则返回所有的行(除非URI将行限定为单条记录).

返回列的排序顺序, 按照SQL ORDER BY的语法. 传入null值则按默认方式排序(可能是无序).

 

 

总体来说ContentProvider就是一个提供了访问其他应用程序数据的方法,但通常情况下是用ContentResolver对象中成员函数来对数据进行操作的,如果还不明白具体的操作方式,可以详细看一下query函数的参数列表与managedQuery的参数列表

posted on 2012-08-08 15:03  小白改bug  阅读(261)  评论(0)    收藏  举报

导航