内容解析器 ContentResolver
来源:互联网 发布:淘宝店芥末和小镇姗姗 编辑:程序博客网 时间:2024/06/09 18:00
注:本文主要摘自developer.android.google.cn/(现在开发者文档里面大多数都有中文版,而且不需要翻墙)
如果有哪里错误,请务必指出,谢谢!
内容提供程序管理对中央数据存储区的访问。提供程序是 Android 应用的一部分,通常提供自己的 UI 来使用数据。 但是,内容提供程序主要旨在供其他应用使用,这些应用使用提供程序客户端对象来访问提供程序。 提供程序与提供程序客户端共同提供一致的标准数据界面,该界面还可处理跨进程通信并保护数据访问的安全性。
内容提供器CRUD跟检索行数据(比如数据库存储方法Sqlite)相类似,所以不了解的可以先了解Sqlite。
第一步应该请求权限:
根据需求去manifest中<uses-permission>填写相关的权限
如下文的用户字典就应该申请: <uses-permission android:name="android.permission.READ_USER_DICTIONARY">
①查询用法query大致如下:
// Queries the user dictionary and returns resultsmCursor = getContentResolver().query( UserDictionary.Words.CONTENT_URI, // The content URI of the words table mProjection, // The columns to return for each row mSelectionClause // Selection criteria mSelectionArgs, // Selection criteria mSortOrder); // The sort order for the returned rows许多提供程序都允许通过将 ID 值追加到 URI 末尾来访问表中的单个行。例如,要从用户字典中检索
_ID
为4
的行,则可使用此内容 URI:Uri singleUri = ContentUris.withAppendedId(UserDictionary.Words.CONTENT_URI,4);还有一种方法是:
Uri uri = Uri.withAppendedPath(UserDictionary.Words.CONTENT_URI, "4");
本例子URI是用户字典,根据所需替换两个参数,注意withAppendedId是int,而Path的是String。查询之后最好对cursor进行判断,
// 有时候会抛出异常或者是错误的cursorif (null == mCursor) { /* * null的情况是错误的cursor 可能是错误的provider,所以此处最好是log.e * 或者进行一些处理,但是一定不要继续调用mCursor,否则报错。 */} else if (mCursor.getCount() < 1) { /* * 这里可能原因是查询不到数据,可能是相关数据库里面没有,或者搜索词错误。
*/} else { // 查询成功}
②插入、删除、更新
这几个都跟检索行数据方法差不多就不一一列出了。
ContentValues mNewValues = new ContentValues();//然后把数据一一putmNewValues.put(UserDictionary.Words.APP_ID, "example.user");mNewUri = getContentResolver().insert(UserDictionary.Word.CONTENT_URI,mNewValues);
插入时如果您不想指定值,则可以使用 ContentValues.putNull() 将列设置为 null。代码段不会添加 _ID 列,因为系统会自动维护此列。
更新时如果您要清除列的内容,请将值设置为 null。
实用要点:
联系人提供程序中的 ContactsContract.Data 表会使用 MIME 类型来标记每行中存储的联系人数据类型。 要获取与内容 URI 对应的 MIME 类型,请调用 ContentResolver.getType()。
异步查询:平时在初始化加载数据时候(比如读取联系人信息),实际用途中请使用异步方法,官方推荐的类有CursorLoader类(有需要的可以自行了解)
- 内容解析器 ContentResolver
- Android开发之内容解析者ContentResolver
- Android ContentResolver 内容解析者(解析器)----重新认识Android(11)
- 内容提供者ContentProvider和内容解析者ContentResolver
- ContentProvider 和ContentResolver内容提供者和内容解析者
- ContentProvider内容提供者 和 ContentResolver内容解析者
- 内容提供者ContentProvider和内容解析者ContentResolver
- 内容提供者ContentProvider和内容解析者ContentResolver
- 内容提供者ContentProvider和内容解析者ContentResolver
- android 学习笔记 内容提供器ContentResolver
- 关于Android sqlite3数据库创建使用内容提供者contentProvider及解析者ContentResolver,观察者ContentResolver案例
- 内容观察者 contentResolver 使用
- 自定义内容提供者contentresolver
- android-内容访问者contentResolver
- Android-ContentResolver内容访问者
- ContentResolver(内容访问者)
- android之ContentResolver(内容分解器)与ContentProvider
- 内容提供器(ContentResolver)---《第一行代码Android》笔记
- Eclipse开发Android应用程序入门
- js实现类似java中String.format的函数
- html5 对话列表样式
- Android屏幕适配知识简单总结
- Ubuntu: 修改文件(夹) 名称
- 内容解析器 ContentResolver
- 移植Python2.7到ARM-LINUX嵌入式平台
- python学习之小工具汇总
- MemcacheDB, Tokyo Tyrant, Redis性能测试比较
- 一个简单的Android自定义View
- 每日小记 2017.6.29
- Thrift在Android上的客户端实现(二):文件传输
- Excel 2016用下拉列表进行数据输入
- axis2 调用webservice 2