这篇文章主要介绍了机器人之内容解析器与内容提供者介绍,需要的朋友可以参考下
机器人中对数据操作包含有:
文件,sqlite3,首选项,上下文解析器与内容提供者前三种数据操作方式都只是针对本应用内数据,程序不能通过这三种方法去操作别的应用内的数据。
机器人中提供ContectResolver与内容提供者来操作别的应用程序的数据。
一、 使用方式
一个应用实现内容提供者来提供内容给别的应用来操作,
一个应用通过内容解析器来操作别的应用数据,当然在自己的应用中也可以。
1.内容解析器的获取
通过语境类:
复制代码代码如下:
公共抽象内容解析器getContentResolver();
2.内容解析器常用操作
复制代码代码如下:
//查询:
公共最终游标查询(Uri uri,String[]投影,
字符串选择,String[] selectionArgs,字符串排序顺序);
//新增
公共最终上呼吸道感染插入(Uri url,内容值值)
//更新
公共最终(同Internationalorganizations)国际组织更新(Uri uri,内容值值,字符串where,
String[] selectionArgs)
//删除
public final int delete(Uri url,String where,String[] selectionArgs)
以上操作实际是通过上呼吸道感染来匹配内容提供者,再由内容提供者来进行具体操作的。
操作的参数和操作sqlite各函数的参数意义是一样的。
二、实现ContentProvider提供给外界访问
调用者内容解析器是通过一个上呼吸道感染来找到相应的内容提供者的来进行实际操作。
1.上呼吸道感染概念
一个上呼吸道感染的样子如:
复制代码代码如下:
方案://权限/路径/id
如电话记录:
复制代码代码如下:
公共静态最终内容URI=Uri。parse(' CONTENT://call _ log/calls ');
a.根据计划不同调用不程序来处理,常用的:内容,android_resource,文件,http等
乙。当局是供应者定义的,在AndroidManifest.xml中定义
c。路径和身份证明(识别)就好理解的。
2.上呼吸道感染定义
创建自己的Uri,如:
复制代码代码如下:
内容://com。shguo。统计/短信
一般数据中都有目录和项目两种(当然可定义多个)。为内容提供者创建息的尿酸匹配器并添加这两者:
复制代码代码如下:
字符串AUTHORITY=' com。shguo。统计学';
UriMatcher sUriMatcher=新的UriMatcher(UriMatcher .NO _ MATCH);
sUriMatcher.addURI(AUTHORITY,' sms ',SMS _ DIR);//SMS_DIR=1
sUriMatcher.addURI(AUTHORITY,' sms/# ',SMS _ ITEM);//SMS_ITEM=2
内容提供者要根据传入上呼吸道感染判断是目录还是项目来操作的。
复制代码代码如下:
开关(sUriMatcher.match(uri))
来分步操作。
3.定义哑剧类型,
覆盖getType方法:主要是根据上呼吸道感染来返回供应者的哑剧类型
复制代码代码如下:
公共静态最终字符串CONTENT _ TYPE=' vnd。安卓。光标。dir/vndshguo。短信';
公共静态最终字符串CONTENT _ ITEM _ TYPE=' vnd。安卓。光标。项目/越南盾。shguo。短信';
getType()为:
复制代码代码如下:
开关(sUriMatcher.match(uri)) {
案例短信_目录:
返回内容类型
案例短信_项目:
返回内容项目类型;
默认值:
抛出新的IllegalArgumentException("未知的URI“乌里”;
}
4.实现查询、插入、删除、更新四个操作。
具体的实现可以用sqlite,文件等。并根据上呼吸道感染分情况操作。
a.询问时如果是项目加查询条件身份证。
其中='_ID=' uri.getPathSegments().get(1)(!TextUtils.isEmpty(where)?AND(' where ')':' ';
最后要加上
光标。setnotificationuri(获取上下文().getContentResolver(),uri);
b.插入时要求上呼吸道感染只能是导演。成功之后返回一个加身份证明(识别)的尤里。
复制代码代码如下:
uri insertUri=内容URIs。withappendedid(内容_ URI,rowId);
c.更新、删除与询问差不多。
复制代码代码如下:
//注意通知注册上呼吸道感染的观察者。
getContext()。getContentResolver().notifyChange(uri,null);
5.在AndroidManifest.xml中定义
供应者元素,主要属性有:
复制代码如下:
Name=ContentProvider类名
authorities=content type的授权部分
Multiprocess=true允许在每个客户端进程中创建提供者实例,消除了执行IPC的需要。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。