借用ContentResolver类访问ContentProvider中共享的数据。通过getContentResolver()方法获得该类的实例。

ContentResolver中的方法:insert()、updata()、delete()、query()

ContentResolver中增删改查方法传入的是Uri(权限、路径):content://com.examlple.app.provider/table1

获得Uri字符串之后,需要将其解析成Uri对象才能作为参数传入,调用Uri.parse()解析Uri字符。

查:

 Uri uri = Uri.parse("content://com.example.app.table1")
Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor != null){
  while(cursor.moveToNext()){
    String column1 = cursor.getString(cursor.getColumnIndex("column1"));
    Int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
  }
  cursor.close();
Uri uri = Uri.parse("content://com.example.app.table1")
Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor != null){
  while(cursor.moveToNext()){
    String column1 = cursor.getString(cursor.getColumnIndex("column1"));
    Int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
  }
  cursor.close();
}

增:

ContentValues values = new ContentValues();
values.put("column1","text");
values.put("column2",1);
getContentResolver().insert(uri,values);

改;

ContentValues values = new ContentValues();
values.put("column1","");
getContentResolver().updata(uri,values,"column1=? and column2 =?",new String[]{"text","1"});

删:

getContentResolver().delete(uri,"column2=?",new String[]{"1"});

自定义ContentProvider

  重写6个抽象方法:onCreate()、query()、insert()、updata()、delete()、getType()

  匹配Uri:借助UriMatches类中addURI(权限、路径、自定义代码)传递期望匹配的URI格式,然后调用match()方法进行匹配,从而判断出调用方期望访问的是哪张表中的数据。

  getType()方法是每个ContentProvider都必须提供的一个方法,用于获取Uri对象所对应的MIME类型。

  MIME类型条件:(1)必须以vnd开头

          (2)如果是Uri路径结尾,则vnd.android.cursor.dir/vnd.com.example.app.provider.table1

          (3)如果是id结尾,则vnd.android.cursor.item/vnd.com.example.app.provider.table2

ContentProvider跨进程共享数据的更多相关文章

  1. 基于xposed实现android注册系统服务,解决跨进程共享数据问题

    昨花了点时间,参考github issues 总算实现了基于xposed的系统服务注入,本文目的是为了“解决应用之间hook后数据共享,任意app ServiceManager.getService就 ...

  2. Android学习--跨程序共享数据之内容提供其探究

    什么是内容提供器? 跨程序共享数据之内容提供器,这是个什么功能?看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实 ...

  3. 0-Android使用Ashmem机制进行跨进程共享内存

    Android使用Ashmem机制进行跨进程共享内存 来源: http://blog.csdn.net/luoshengyang/article/details/6651971 导语: 在Androi ...

  4. 基于Ceph分布式集群实现docker跨主机共享数据卷

    上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...

  5. 内容提供者(Content Provider)——跨程序共享数据

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

  6. python开发进程:共享数据&进程池

    一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...

  7. node中的cluster模块开启进程,进程共享数据

    说明:共享数据 var collection = [41, 41, 41, 41] master.js console.log('###---start---###') var cluster = r ...

  8. windows:跨进程读数据

    外挂.木马.病毒等可能需要读取其他进程的数据,windows提供了OpenProcess.ReadProcessMemory等函数.但越是大型的软件,防护做的越好,大概率会做驱动保护,比如hook S ...

  9. 使用WM_COPYDATA跨进程发送数据

    进程之间通讯的几种方法: 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 使用内存映射文件 通过共享内存DLL共享内存 使用SendMessage向另一进程发送WM_ ...

随机推荐

  1. 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤

    一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...

  2. LeetCode Minimum Moves to Equal Array Elements II

    原题链接在这里:https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/ 题目: Given a non-empt ...

  3. CentOS7 配置网卡端口镜像

    背景 最近一直在研究旁路监测,需要设置一个源端口镜像给两个目的端口(分别接两个监测设备),无奈ip-com交换机没配置明白,研究下使用软件实现暂时代替. 环境 发行版.内核.iptables版本信息如 ...

  4. oracle not in,not exists,minus 数据量大的时候的性能问题

    http://blog.csdn.net/greenappple/article/details/7073349/ 耗时 minus<not exists<not in

  5. Swift:闭包

    一.闭包的介绍 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Ar ...

  6. 用jsonp格式的数据进行ajax post请求变成get

    因为 dataType 是 jsonp 而不是 json jsonp不支持POST跨域,所以会自动转成GET而关于jsonp为什么不支持post请求,百度到的答案是jsonp为动态的script,没有 ...

  7. highcharts 插件问题

    Uncaught TypeError: $(...).highcharts is not a function 解决方法: $('#container').highcharts({ colors: [ ...

  8. docker 组件(c/s)

    Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...

  9. 只需三步--轻松反编译Android Apk文件

    安卓程序是通过java语言进行编写的,可以很容易进行反编译.很多apk文件被反编译后再二次打包,就成了自己的产品,很是流氓.下面我们来看看如何进行apk的反编译,以及常用的防反编译手段. 一.反编译A ...

  10. Hadoop等软件常见运行问题及解决办法

    Hadoop常见问题及解决办法  1.问题:java.io.IOException: Could not locate executable null\bin\winutils.exe in the ...