1.系统自带的许多数据(联系人,本地信息等)保存在sqllite数据库,然后封装成许多ContentProvider来供其他程序访问。

2.对sqllite数据库的操作,可以在命令行通过adb工具登录设备运行sqlite3来操作。
3.ContentProvider 是用URI来标示,访问程序通过URI来访问相应的数据,URI的结构是
   content://***/*/*...其中***是授权,在ContentProvider提供程序的说明文件中声明,后面的*表示路径,具体由ContentProvider实现来解释,ContentProvider为简化URI的调用,将这种URI定义为常量字符串供查看和调用。
 
4.客户端通过URI和需要获取的列,选择条件,排序条件等用相应的api来获取结果,结果是一个android Cursor,可以使用相应的方法获取结果集中的内容,返回的数据是MIME格式,类型/子类型。
 
5.android内置
 
 
6.从Context中获取ContentResolver,然后ContentResolver通过URI  进行AUD ContentProvider操作
7.可以通过managedQuery方法获取一个ContentProvider数据集合(Cursor)然后通过Cursor类的,moveFirst() afterLast() moveNext()来遍历数据,并可以先获取列索引(Cursor.getColumnIndex(columnName)),然后根据索引获取列值(Cursor.getString(ColumnIndex))
 
8.where子句可以通过URI和参数两种方式,orderby子句可以通过参数,having可以通过参数指定。
9.操作记录时需要一个ContentValues类型,该类型为键值对,键为列名值为需要插入的值。insert操作会返回插入记录的URI
10.将文件添加到ContentProvider中。
     10.1通过一个insert操作获取URI
     10.1通在URI上使用(ContentResolver.openOutputStream(URI)来让提供程序产生一个内部文件,并将文件名保存在保留列_data上,然后返回这个内部文件的输出流。
 
11.实现一个ContentProvider的几个步骤
    11.1 计划数据库,URI及列名称,创建元数据类来定义所有这些数据元素常量
    11.2扩展抽象类ContentProvider
    11.3实现方法query,insert,update,delete和getType
    11.4在描述文件中注册提供程序。
 
12 扩展ContentProvider
     12.1扩展ContentProvider时需要定义和初始化一个列名称与别名的map,就算没有别名也需要。
     12.2用UriMatcher来识别uri
     12.3通过扩展SQLiteOpenHelper类来创建数据库,创建表,获取数据库实例。
     
 

android 学习四 ContentProvider的更多相关文章

  1. android学习四(Activity的生命周期)

    要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...

  2. android学习四---Activity和Intent

    1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...

  3. Android学习四:数据库操作

    1前言 android中使用SQLite作为数据库,在进行相关的开发的时候不需要导入包.SQLite起符合SQL标准,也有自己的一些特性,是一个轻量级的数据库. 2代码 简单的数据库类封装 packa ...

  4. Android学习四、Android中的Adapter

    一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for t ...

  5. openfire Android 学习(四)----单人聊天和多人聊天(发送消息、接收消息)

    一.单人聊天 1)发送消息: 首先要获取一个聊天窗口,getConnection()为获取连接connection的方法,调用getFriendChat()获取 [java] view plainco ...

  6. Android学习记录(3)—Android中ContentProvider的基本原理学习总结

    一.ContentProvider简介        当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...

  7. 五、Android学习第四天补充——Android的常用控件(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的A ...

  8. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...

  9. Android学习笔记(四十):Preference的使用

    Preference直译为偏好,博友建议翻译为首选项.一些配置数据,一些我们上次点击选择的内容,我们希望在下次应用调起的时候依旧有效,无须用户再一次进行配置或选择.Android提供preferenc ...

随机推荐

  1. Pollard_rho 因数分解

    Int64以内Rabin-Miller强伪素数测试和Pollard 因数分解的算法实现 选取随机数\(a\) 随机数\(b\),检查\(gcd(a - b, n)\)是否大于1,若大于1则\(a - ...

  2. nrf52840蓝牙BLE5.0空中速率测试(nordic对nordic)

    一.基础知识: [1]Data Length:物理层发送一包数据的最大值: [2]MTU: ATT层发送一次数据长度的最大值: [3]GAP Event Length:一个connection eve ...

  3. Java中int和String的转换问题

    int -> String int i=12345;String s="";第一种方法:s=i+"";第二种方法:s=String.valueOf(i); ...

  4. 如何遍历Map操作总结

    Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "123"); ...

  5. 一个有意思的CSS样式库--BUTTONS

    我最近发现了一个有意思的CSS样式库,和Bootstrap相似,但是它是专门的一个高度可定制的,免费的并且开源的按钮CSS样式库,这里附上它的网址:http://www.bootcss.com/p/b ...

  6. 通过 openURL 方法跳转至设置 - iOS

    iOS 10 以下系统版本可以通过 openURL 的方式跳转至指定的设置界面,code 如下: NSURL *url = [NSURL URLWithString:@"prefs:root ...

  7. Java九阳真经论述及愿景

    Java九阳真经论述及愿景 “他强由他强,清风拂山冈,他横由他横,明月照大江.” <倚天屠龙记>中张无忌被玄冥二老的玄冥神掌打伤后,体寒难耐,到处求解决之法.一次被韦蝠王打下山谷后,偶遇一 ...

  8. input 输入的一些限制说明

    input输入框 只能输入 数字可以有小数点 <input class="form_text" id="purchasePrice" name=" ...

  9. shutil.rmtree()

    shutil.rmtree(path, ignore_errors=False, onerror=None)   #递归地删除文件 def rmtree(path, ignore_errors=Fal ...

  10. rz/sz:工作原理

    我们知道用linux命令rz/sz可以通过一些终端软件如secureCRT等在linux服务器与本地windows之间传文件.在服务器上rz一下,在本地windows下就跳出一个窗口,选择文件后就传到 ...