重点:理解ContentProvider 的作用和创建流程

1. 内容提供者,提供 其他数据库的访问。

  特点 
     - 描述 : 它是android 四大组件之一,需要androidManifestxml 注册,没有界面,为第三方的应用提供访问数据的标准接口
     - 作用 : 1. 共享数据给第三方应用   2. 统一数据访问的平台
     - 线程安全的问题 : 内容提供者是线程安全的 ,内容提供者是单例模式 ,且对相应的接口方法实现了同步锁(synchronized) ,由 内容访问者和内容提供者共同维护线程安全

内容提供者需要在配置清单中 配置

  <provider android:name=""
android:authorities=""
android:exported="true"></provider>

2.通过ContentProvider共享数据实现流程 
    * 准备要共享的数据,一般就是sqlite数据库
    * 编写类,继承ContentProvider ,并且实现相应的接口方法(增删改查、getType: 获取要访问的数据的MIME类型(*/image,*/video,text/plain ))
    * 内容提供者在AndroidManifest.xml注册,并且设置 认证或者权限 ,android:authories (它是该内容提供者的唯一标识)
    * 第三方应用通过内容解决者来访问 ContentProvider 
        ContentResolver resolver=Content().getContentResolver()
       - 增上改查

public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
switch (v.getId()) {
case R.id.save:
Cursor cur = cr.query(Uri.parse("content://sms"), new String[]{"address","date","type","body"} , null, null, null);
while(cur.moveToNext()){
String address = cur.getString();
String date = cur.getString();
String type = cur.getString();
String body = cur.getString();
System.out.println(address + "--" + date + "--" + type+ "--"+ body );
}
break;
case R.id.insert:
ContentValues cv = new ContentValues();
cv.put("address", );
cv.put("date", System.currentTimeMillis() );
cv.put("type", );
cv.put("body", "你已转账1,000,000元");
cr.insert(Uri.parse("content://sms"), cv); break; }
}

3.常用的API
    1. Uri  :统一资源标识符,它比url更细粒度 ,可以标识 数据库中的表的记录的某个字段
       作用: 表示你要操作的数据
 
    2. UriMatch  :匹配Uri  地址 
    3. ContentUris  :内容Uri :主要解析id或者拼id

4.访问系统提供的内容提供者
     - uri:content://sms  : 短信
       字段: "_id", "address", "body", "read", "date", "type", "protocol"
     - Uri:content://call_log/calls :通话记录
       字段:_id、number、date、duration
       通话记录权限
    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
    <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

第九天 内容提供者 ContentResolver的更多相关文章

  1. 内容提供者 ContentResolver 数据库 示例 -2

    MainActivity public class MainActivity extends ListActivity {     // 访问内容提供者时需要的主机名称     public stat ...

  2. 内容提供者 ContentResolver 数据库 示例 -1

    MainActivity public class MainActivity extends ListActivity {     private TextView tv_info;     priv ...

  3. android100 自定义内容提供者

    #ContentProvider,就是来操作数据的,增删改查, * 四大组件之一 * 应用的数据库是不允许其他应用访问的 * 内容提供者的作用就是让别的应用访问到你的数据库 * 内容提供者的作用:把私 ...

  4. Android开发学习—— ContentProvider内容提供者

    * 应用的数据库是不允许其他应用访问的* 内容提供者的作用就是让别的应用访问到你的数据库.把私有数据暴露给其他应用,通常,是把私有数据库的数据暴露给其他应用. Uri:包含一个具有一定格式的字符串的对 ...

  5. Android学习---通过内容提供者(ContentProvider)操作另外一个应用私有数据库的内容

    一.什么是ContentProvider? ContentProvider直译过来就是内容提供者,主要作用就是A应用提供接口给B应用调用数据,和之前介绍的sharedPreference和直接开放文件 ...

  6. 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)

    1.listview入门,自定义的数据适配器 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/and ...

  7. Android应用开发基础之九:内容提供者(ContentProvider)

    内容提供者 应用的数据库是不允许其他应用访问的 内容提供者的作用:就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方法,在方法中写增删改查数据库的代 ...

  8. 安卓第十四天笔记-内容提供者(ContentProvider)

    安卓第十四天笔记-内容提供者(ContentProvider) ContentProvider--内容提供者 1.ContentProvider简介 ContentProvider是不同应用程序之间进 ...

  9. Android组件系列----ContentProvider内容提供者

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. IOS网络第二天 - 02-异步HTTP请求block回调 解析

    ************** #import "HMViewController.h" #import "MBProgressHUD+MJ.h" @interf ...

  2. LaTex 文本排版

    一.对齐段落 \\ or \newline 另起一行,而不是另起一段 \\* 在强制断行后,还禁止分页 \newpage 另起一页 \linebreak[n] \nolinebreak[n] \pag ...

  3. 【iCore3 双核心板_FPGA】例程七:基础逻辑门实验——逻辑门使用

    实验指导书及代码包下载: http://pan.baidu.com/s/1Rs18U iCore3 购买链接: https://item.taobao.com/item.htm?id=52422943 ...

  4. AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

    在使用SqlConnection.Open()连接到SQL Server 2008 R2 SP2时,一直报以下异常: AccessViolationException: 尝试读取或写入受保护的内存.这 ...

  5. 服务器(Liunx)打包发布java web工程

    Liunx服务器上打包发布web工程(开发工具Idea) 1.首先使用Idea自带的打包功能(点击package打包) 2.然后链接到服务器(我这里用的是Xshell链接工具) 3.将打好的war包传 ...

  6. Java学习-043-获取文件在目录中的路径

    我们在日常的电脑使用中,经常需要在当前目录或当期目录及其子目录中查找文件,并获取相应的文件路径名.在我们的自动化测试中,也经常需要确认文件在目录中是否成功生成或已存在,因而我写了一个小方法来实现. 获 ...

  7. Linux环境下apache性能测试工具ab使用详解

    网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环.只有让服务器处在高压情况下,才能真正体现出软件.硬件等各种设置不当所暴露出的问题. 性能测试工具目前最常见的有以下几种:ab.http_lo ...

  8. 访问 Android Developers 403 错误

    原因: 以前改过 hosts. 现在用的 威-屁-恩. 解决办法: 把改过的 hosts 删掉就行了.

  9. Map的简单语法

    package jaxpsax; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; i ...

  10. [Android Tips] 18. Enable/Disable WiFi via adb

    adb shell svc wifi enable|disable Awesome ADB