【Android 简单通信组件学习】ContentProvide 唯一与所有app交互的组件

本文主要是介绍【Android 简单通信组件学习】ContentProvide 唯一与所有app交互的组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  首先我们了解 ContentProvider组件

它 实现系统数据访问

  实现应用程序数据共享


补充一:

ContentProvider -数据提供者,

是Android四大组件之一,是程序之间数据共享的接口


Activity系统中对数据的访问限制是非常严格的,

不允许其他应用直接访问当前程序中存储在非SD卡中数据,

但是实际中我们经常会涉及到数据共享,

 ContentProvider则是应用程序提供为外部访问的一个窗户,

为数据共享提供了统一的访问方法


补充二:

ContentProvide对数据进行封装,不用关心数据存储的细节。使用表的形式来组织数据
ContentProvider可以在不同的应用程序之间共享数据
Android为常见的一些数据提供了默认的ContentProvider(包括音频、视频、图片和通讯录等)


补充三:方法

1、ContentProvider类主要方法的作用:

public boolean onCreate():

该方法在ContentProvider创建后就会被调用,Android开机后,ContentProvider在其它应用第一次访问它时才会被创建。


public Uri insert(Uri uri, ContentValues values):

供外部ContentProvider添加数据。 public int delete(Uri uri, String selection, String[] selectionArgs):

该方法用于供外部应用从ContentProvider删除数据。


public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs):

该方法用于供外部应用更新ContentProvider中的数据。


public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 

用于供外部应用从ContentProvider中获取数据。 public String getType(Uri uri):用于返回当前Url所代表数据的MIME类型。
如果操作的数据属于集合类型,那么MIME类型字符串应该以vnd.android.cursor.dir/开头


补充四:

1、ContentResolver操作ContentProvider中的数据


当外部应用需要对ContentProvider中的数据进行添加、删除、修改和查询操作时,可以使用ContentResolver 类来完成,要获取ContentResolver 对象,可以使用Activity提供的getContentResolver()方法


监听ContentProvider中数据的变化


如果ContentProvider的访问者需要知道ContentProvider中的数据发生变化

可以在ContentProvider发生数据变化时调用getContentResolver().notifyChange(uri, null)

来通知注册在此URI上的访问者


例子:

QQ访问sd卡,读取图片,发送表情。

微信 访问通讯录,生成新的好友信息


代码效果:

一、添加学生:



查询学生:添加了几个,就能查询出几个



访问数据信息:

<

这篇关于【Android 简单通信组件学习】ContentProvide 唯一与所有app交互的组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/656407

相关文章

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL逻辑删除与唯一索引冲突解决方案

《MySQL逻辑删除与唯一索引冲突解决方案》本文探讨MySQL逻辑删除与唯一索引冲突问题,提出四种解决方案:复合索引+时间戳、修改唯一字段、历史表、业务层校验,推荐方案1和方案3,适用于不同场景,感兴... 目录问题背景问题复现解决方案解决方案1.复合唯一索引 + 时间戳删除字段解决方案2:删除后修改唯一字

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局