- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.4 数据分享 8.4.1 ContentProvider调用 如果请求的数据并不只限于一条数据,则id是可以省略,例如 请求整个people数据集的URI应写为 1 content://edu.hrbeu.peopleprovider/people 请求people数据集中第3条数据的URI则应写为 1 content://edu.hrbeu.peopleprovider/people/3 8.4 数据分享 8.4.2 创建数据提供者ContentProvider 程序开发人员通过继承ContentProvider类可以创建一个新的数据提供者,过程可以分为三步 继承ContentProvider,并重载六个函数 声明CONTENT_URI,实现UriMatcher 注册ContentProvider 8.4 数据分享 8.4.2 创建数据提供者 1. 创建ContentProvider,重载六个函数 新建立的类继承ContentProvider后,共有六个函数需要重载,分别是 delete():删除数据集 insert():添加数据集 qurey():查询数据集 update():更新数据集 onCreate():初始化底层数据集和建立数据连接等工作 getType():返回指定URI的MIME数据类型 如果URI是单条数据,则返回的MIME数据类型应以vnd.android.cursor.item开头 如果URI是多条数据,则返回的MIME数据类型应以vnd.android.cursor.dir/开头 8.4 数据分享 8.4.2 创建数据提供者 2. 声明CONTENT_URI和构造UriMatcher的代码如下 1 public static final String AUTHORITY = edu.hrbeu.peopleprovider; 2 public static final String PATH_SINGLE = “people/#”; //单条数据路径, #可以代表任何数字 3 public static final String PATH_MULTIPLE = “people”; //多条数据路径 4 public static final String CONTENT_URI_STRING = content:// + AUTHORITY + / + PATH_MULTIPLE; 5 public static final Uri CONTENT_URI = Uri.parse(CONTENT_URI_STRING); 6 private static final int MULTIPLE_PEOPLE = 1; //返回代码 7 private static final int SINGLE_PEOPLE = 2; 8 9 private static final UriMatcher uriMatcher; 10 static { 11 uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); 12 uriMatcher.addURI(AUTHORITY, PATH_SINGLE, MULTIPLE_PEOPLE); 13 uriMatcher.addURI(AUTHORITY, PATH_MULTIPLE, SINGLE_PEOPLE); 14 } 8.4 数据分享 8.4.2 创建数据提供者 UriMatcher,识别来访者需要调用多条还是单数数据 使用UriMatcher时,则可以直接调用match()函数,对指定的URI进行判断,示例代码如下 1 switch(uriMatcher.match(uri)){ 2 case MULTIPLE_PEOPLE: 3 //多条数据的处理过程 4 break; 5 case SINGLE_PEOPLE: 6 //单条数据的处理过程 7 break; 8 default: 9 throw new IllegalArgumentException(不支持的URI: + uri); 10 } 8.4 数据分享 8.4.2 创建数据提供者 3. 注册ContentProvider 在完成ContentProvider类的代码实现后,需要在AndroidManifest.xml文件中进行注册 注册ContentProvider使用provider标签,示例代码如下 1 application android:icon=@drawable/icon android:label=@str
文档评论(0)