有不明之处或者本文有错误地方请大方的提出来,转载请注明来源:http://blog.csdn.net/geekerparadise/article/details/7787729
接触Android有一段时间了,每一个知识点都有涉及,现在觉得重新把知识点理一遍很重要,那么就凭感觉、凭喜好无知识点先后顺序来理清一遍。这篇文章主要叙述了如何来自定义自己的ContentProvider组件,其中涉及到的一些比较重要的知识点也顺带详细分解一下,那么现在就开始吧。
一、SQLiteOpenHelper简介:
SQLiteOpenHelper是Android给我们提供的一个工具,用来和数据库交互的。我们通常使用的方法是自定义一个类来继承于SQLiteOpenHelper,通过它可以得到一个SQLiteDatabase的实例,通过使用此对象的一些方法来与数据库交互。
例如:
execSQL(Stringsql).传入一个字符串形式的sql语句来执行等。
insert(String table, String nullColumnHack, ContentValues values)。插入操作,table是表名,values是ContentValues类型用来携带数据的,第二个参数是为了防止values为空时后台创建SQL语句出错。具体的其他方法参考API文档,此处就不做解释。
二、ContentProvider简介:
假如你的应用程序想把一些数据提供给其他的应用程序来使用,那么此时就会用到ContentProvider,有了它你的应用程序就可以在进程间共享数据。使用的时候需要创建一个类来继承ContentProvider,实现里面的方法,这就相当于此应用给其他应用程序提供访问数据的接口。说直观点,Contentprovider就相当于一个中介人,它介于第一个应用程序的数据层和另一应用程序之间。使用了Contentprovider最重要的作用是统一了共享数据时访问数据的方式。
三、ContentResolver简介:
当外部应用程序想对ContentProvider中数据进行操作时可以使用ContentResolver来完成,要获取它的对象可以使用Activity中的getContentResolver方法来完成。
四、Uri简介:
介绍之前默认为大家都了解URL,那么URL就相当于Uri的一个子集。Uri由三部分组成:scheme、authority、path。下面举一个例子来具体介绍。
Uri: content://com.jm.provider.myprovider/peoples
1 scheme部分:以content://开头,是Android系统定义的,不可更改。
2 authority部分:推荐以域名+provider+类名组成,也可自己定义。
3 path部分:用来表示我们要操作的数据。具体说明如下:
要操作peoples中所有数据可以构建 /peoples
要操作peoples中_id为1的数据可以构建/peoples/1
Uri有两个比较常用方法
1 parse(String uriString)它的作用是将字符型数据转换成Uri类型数据。
2 withAppendedPath(Uri baseUri,String pathSegment)它的作用是将baseUri后面加上pathSegment组成新的Uri。
五、UriMatcher简介:
作用是在ContentProvider中把需要匹配的Uri全部注册上。
UriMatcher.NO_MATCHER表示不匹配任何路径,返回码为-1.
UriMatcher有两个常用方法。
1 match(Uri uri)获取路径的返回码。
2 addURI(String authority, Stringpath, int code)是用来注册需要匹配的路径。具体实例参看下文。
API中推荐