ContentProvider作为四大组件之一,那它存在一定是有原因的? 那为什么引用ContentProvider呢?  我们先看一个例子。

大家在生活中用手机,比如你按了360手机管家, 其中360手机管家就有一个短信,通话记录,联系人备份的功能。那手机里的短信,联系人都是存放在数据库中的

比如联系人的信息是存放在contacts2.db中。既然数据是存放在数据库中的,那360手机管家就必须拿到这个数据。但是contac2.db对别的用户是没有权限的。那360是如何拿到手机联系人这些信息呢?

这时候Android系统就引入了ContentProvider。既然第三方程序不能直接操作数据库里的数据,但是第三方可以通过ContentProvider提供的接口去操作数据。所以说ContentProvider的作用就是:就是在不同应用程序之间实现数据的共享。就比如说联系人程序,想把自己的数据共享给别人,但是又不能让别人直接操作,所以联系人程序就通过ContentProvider将自己的数据暴露出来。但是第三方程序想获得该数据,就得必须通过ContentResolver去获得该数据。

那既然访问数据必须通过ContentResolver去访问ContentProvider暴露出来的数据,那ContentResolver是如何知道数据在那里存放的呢?前提是ContentProvider得告诉数据在那里,你去那里取。 这时候及引入另一个人概念Url。

提起URL,大家可能第一想法就是互联网上的URL(统一资源定位符)。此URL是互联网上的URL,而在Android系统中url代表的也是一个地址。但是两者是有区别的:

比如就以百度主页的图片网址为例:

对比看看我们Android中的URL:

既然知道URL是干什么的,那接下来学习URL的一些常用的方法:

1: 将一个字符串转化为URL

Uri uri = Uri.parse("contengt://com.demo.contentprovider/user/1");

2:为url路径加上ID部分

 Uri uri = Uri.parse("content://com.demo.contentprovider/user");Uri resUri = ContentUris.withAppendedId(uri, 1);/*生成后的uri为: content://com.demo.contentprovider/user/1 */

3:匹配此URl是否合法

 /*构造方法的默认值是返回-1, 代表时不匹配返回-1*/UriMatcher matcher = new UriMatcher(-1);/*如果匹配为:content://com.demo.contentprovider/user, 就返回为1*/matcher.addURI("com.demo.contentprovider", "user", 1);/*如果匹配为:content://com.demo.contentprovider/user/2, 就返回为2*/matcher.addURI("com.demo.contentprovider", "user/#", 2);//#代表通配符

今天关于ContentProvider以及URL的知识就说到这里

Android 四大组件学习之ContentProvider一相关推荐

  1. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  2. Android四大组件之ContentProvider 全面解析,ContentResolver源码解析如何调用其它APP的ContentProvider

    今天来总结下Android中的ContentProvider(以下简称CP),具体代码请见https://github.com/Mangosir/ContentProviderReview/tree/ ...

  3. Android四大组件之——Broadcast学习总结

    1.Broadcast概念 是一个全局的监听器,属于Android四大组件之一.Broadcast(广播)是一种广泛运用的在应用程序(APP)之间传输信息的机制.而BroadcastReceiver( ...

  4. Android四大组件和启动模式(面试总结)

    一.Android四大组件详解 Android四大组件分别为Activity.Service.Content Provider.Broadcast Receiver. 1.Activity (1)一个 ...

  5. Android四大组件之Content Provider

    Android四大组件之Content Provider 作者:白璐 日期:2020/2/24 文章目录 Android四大组件之Content Provider 概述 内容提供器(Content P ...

  6. Android 四大组件通信核心

    前言 系列文章: Android Activity创建到View的显示过程 Android 四大组件通信核心 Android 系统启动到App 界面完全展示终于明白(图文版) 我们知道Android ...

  7. Kotlin第七章: Android四大组件

    1. 四大组件 四大组件是每一个Android人必须要会,要掌握的知识点,因为他们是我们在日常开发工作中打交道最频繁的组件,而且他们四个在不同的领域扮演着极其重要的角色. Activity: 负责用户 ...

  8. Android四大组件总结

    四大组件系列文章 Activity总结和补充:Activity总结和补充_fdsafwagdagadg6576的博客-CSDN博客 Android Binder&Aidl理解和补充:Andro ...

  9. Android四大组件之一 ContentProvide

    简介 Android四大组件之一 content provider,它主要的作用是:实现各个应用程序之间的(跨应用)数据共享. 在这里涉及到进程通信问题,自然在Android中使用的是binder来进 ...

  10. Android——四大组件、六大布局、五大存储

    一.android四大组件 (一)android四大组件详解 Android四大组件分别为activity.service.content provider.broadcast receiver. 1 ...

最新文章

  1. 生成对抗网络(GAN)的理论与应用完整入门介绍
  2. 成功当选2014年度MVP
  3. 几种常用控件的使用方法
  4. springboot如何使用log4j记录日志
  5. 基础数据类型,注释,变量
  6. vb 访问远程计算机,vb 连接远程服务器
  7. 配置Memcache服务器并实现主从复制功能(repcached)(转)
  8. QCC300X 充电配置 调试笔记
  9. tongweb使用之端口冲突处理办法
  10. 计算机公式最小值,excel最小值函数
  11. 计算机图书管理系统测试用例,图书管理系统测试用例设计.doc
  12. 【华为电脑管家】打开多屏协同会自动修改微软拼音输入法兼容性的解决方案
  13. 工行网银B2c第三方接口开发
  14. 九存支持 2018全球存储半导体大会暨全球闪存技术峰会
  15. 学前端的你了解这些知识吗?——BFC、IFC、GFC、FFC
  16. <OS Concepts 9th> Chap 4 线程与并发
  17. 工程建设项目业务学习
  18. 孔子最得意的弟子颜回不幸英年早逝
  19. 多模态视觉任务Video Grounding介绍
  20. 主和取范式与主析取范式

热门文章

  1. Mybatis实现高级映射一对一、一对多查询
  2. 百度同步盘无法登陆,报错155010,对策
  3. 《构建之法》阅读笔记(三)
  4. Sailfish预研结果
  5. UNIGUI中如果获得Session情况
  6. 使用Nginx实现负载均衡
  7. Oracle 备份与恢复学习笔记(8)
  8. eclipse 项目显示红叉
  9. strcmp函数使用中的一些细节问题
  10. ASP.NET伪静态