首页 > 技术文章 > 开发ContentProvider的步骤

dazuihou 2014-03-14 12:43 原文

  开发ContentProvider的步骤如下:

  1.编写一个类,该类必须继承自ContentProvider。

   2.实现ContentProvider类中的所有抽象方法:insert() delete()  update()  query()和getType()。

  3.定义ContentProvider的URI。URI的形式为content://authority/path/param。一般情况下authority建议使用域名,因为域名是唯一的,不会重复。

  4.在static块中使用UriMatcher对象映射Uri和返回码。代码如下:

1 static
2 {
3     //开始映射Uri和返回码
4     UriMatcher=new UriMatcher(UriMatcher.NO_MATCH);
5     UriMatcher.addURI(AUTHORITY,"cities",1);
6     UriMatcher.addURI(AUTHORITY,"code/#",2);//#表示任意数字
7     UriMatcher.addURI(AUTHORITY,"cities_in_province/*",3);//*表示任意字符

  5.根据实际的需要实现相应的方法。例如:我们只想对数据进行只读操作,可以只实现query方法。insert、delete和update方法可以直接抛出异常即可。

  6.实现query、insert、delete和update方法时要使用UriMatcher.match方法将URI映射成第四步与URI对应的代码(addURI方法的最后一个参数值),代码如下:

 1 //实现query方法
 2 public Cursor query(Uri uri,String[] projection,String selection,String[] selectionArgs,String sortOrder)
 3 {
 4     Cursor cursor=null;
 5     //根据Uri获取返回码
 6     switch(UriMatcher.match(uri))
 7       {
 8         case 1:
 9         ......
10         break;
11         case 2:
12         ......
13         break;
14         case 3:
15         ......
16         break;
17         default:
18         throw new IllegalArgumentException("<"+uri+">格式不正确。");
19     }
20     return cursor;
21 }

  7.在AndroidManifest.xml文件中使用<provider>标签注册ContentProvider,代码如下:

<provider android:name="RegionContentProvider"
              android:authorities="mobile.android.mydata"/>

  其中,mobile.android.mydata就是在第四步中AUTHORITY的值。

推荐阅读