搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
盐析白兔
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
linux区分系统盘和数据盘命令_linux系统盘和数据盘区别
2
Mac上更新Ruby,安装cocoapods详细教程_mac为什么只能安装ruby2.7
3
MethodArgumentTypeMismatchException异常分析_org.springframework.web.method.annotation.methodar
4
pip安装prophet的血泪史(C++编译器、pystan、fbprophet)_colab无法安装prophet
5
如何查看你的公网ip?_如何查看自己公网ip
6
【Docker】Windows11操作系统下安装、使用Docker保姆级教程_dockerwindows11安装
7
安装 node 错误的配置环境变量之后使用 npm 报错
8
10个好用到爆的"反爬虫"措施!
9
Linux 4.19 内核中 spinlock 概览
10
Android第二讲笔记(约束布局ConstraintLayout)_layout_constrainttop_totopof
当前位置:
article
> 正文
android四大组件之内容提供者(ContentProvider)_内容提供者是1对1的吗
作者:盐析白兔 | 2024-03-16 00:57:59
赞
踩
内容提供者是1对1的吗
内容提供者(ContentProvider)
一、什么是内容提供者
1、内容提供者是Android中的四大组件之一,可以将应用中的数据对外进行共享
2、内容提供者将数据的访问方式统一,不必针对不同数据类型采取不同的访问策略
3、内容提供者将数据封装,只暴露出我们希望提供给其他程序的数据
4、内容提供者中数据更改可被监听
二、创建内容提供者ContentProvider
1、定义类继承ContentProvider,根据需要重写内部方法
2、在清单文件的<application>节点下进行配置,<provider>标签中需要指定name和authorities属性
name为类名,包名从程序Package开始,以“.”开始
authorities:是访问Provider时的路径,要唯一
3、URI代表要操作的数据,由scheme、authorites、path三部分组成
content://com.joyque.sqlite.provider/person
scheme:固定为content,代表访问内容提供者
authorites:<provider>节点中的authorites属性
path:程序定义的路径,可根据业务逻辑定义
三、完成CRUD方法
1、当程序调用CRUD方法时会传入Uri
2、我们通过Uri判断调用者要操作的数据
可以使用工具类UriMatcher来判断Uri
addURI方法可以添加Uri
match方法可以匹配一个Uri判断其类型
3、根据业务逻辑操作数据
四、访问内容提供者
ContentProvider
1、通过Context获得ContentResolver对象
2、调用ContentResolver对象的方法即可访问内容提供者
五、完成getType方法
1、如果返回数据是单条数据:vnd.android.cursor.item
2、如果返回数据是多条数据:vnd.android.cursor.dir
六、监听内容提供者
ContentProvider
数据变化
1、在内容提供者中可以通知其他程序数据发生变化
通过Context的getContentResolver()方法获取ContentResolver
调用其notifyChange()方法发送数据修改通知
2、在其他程序中可以通过ContentObserver监听数据变化
通过Context的getContentResolver()方法获取ContentResolver
调用其registerContentObserver()方法指定对某个Uri注册ContentObserver
自定义ContentObserver,重写onChange()方法获取数据
七、监听短信
1、Android系统提供了Provider对短信进行查询,当发出短信时也会发送更改通知
2、定义一个Observer监听"content://sms"
3、在onChange()方法中查询"content://sms "
4、短信发送数据库在 com.android.providers.telephony
5、需要权限android.permission.READ_SMS
八、操作联系人
1、获取所有联系人
1.1、Android系统中的联系人也是通过ContentProvider来对外提供数据的
1.2、数据库路径为:/data/data/com.android.providers.contacts/database/contacts2.db
1.3、我们需要关注的有3张表
raw_contacts:其中保存了联系人id
data:和raw_contacts是多对一的关系,保存了联系人的各项数据
mimetypes:为数据类型
1.4、Provider的authorites为com.android.contacts
1.5、查询raw_contacts表的路径为:contacts
1.6、查询data表的路径为:contacts/#/data
这个路径为连接查询,直接查询“mimetype”字段就可以根据“mimetype_id”查询到mimetypes表中的数据
1.7、先查询raw_contacts得到每个联系人的id,在使用id从data表中查询对应数据,根据mimetype分类数据
2、通过电话号码获取联系人
2.1、系统内部提供了根据电话号码获取data表数据的功能,路径为:data/phones/filter/*
2.2、用电话号码替换“*”部分就可以查到所需数据,获取“display_name”可以获取到联系人显示名
3、添加联系人
3.1、先向raw_contacts表插入id,路径为:raw_contacts
3.2、得到id之后再向data表插入数据,路径为:data
4、使用事务添加联系人
4.1、在添加联系人得时候是分多次访问Provider,如果在过程中出现异常,会出现数据不完整的情况,这些操作应该放在一次事务中
4.2、使用ContentResolver的applyBatch(String authority,ArrayList<ContentProviderOperation> operations) 方法可以将多个操作在一个事务中执行
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/盐析白兔/article/detail/245871
推荐阅读
article
Android
传感器
概述
(一)...
大多数
Android
设备都有内置
传感器
,用来测量运动、屏幕方向和各种环境条件。这些
传感器
能够提供高度精确的原始数据,...
赞
踩
article
Android
源码分析 -
传感器
-
HAL
层
_
android
霍尔
android
...
传感器
模块接口定义在hardware/libhardware/include/hardware/sensors.h中。模...
赞
踩
article
Android
加解密
类
Cipher
_
android
cipher...
近日在做一个关于短信及文件
加解密
的小项目,查看了一些
Android
加解密
方面的知识。关于
加解密
这部分以前完全没有接触过,...
赞
踩
article
安卓开发——
Android
Studio
常见报错与解决方法_unsupported
java
. yo...
Android
Studio
安卓开发中常见的错误与解决方法具体步骤。_unsupported
java
. your bu...
赞
踩
article
Android
Studio Unsupported
Java
_
unsupported
java
....
问题:升级
Android
Studio Flamingo 出现 Unsupport
Java
报错信息_unsuppo...
赞
踩
article
android
studio
编译老项目失败问题处理_unsupported
java
. your ...
项目编译失败:Unsupported Java. Your
build
is
currently
configur
ed ...
赞
踩
article
Android
Gradle
开发与应用 (六) :
创建
buildSrc
插件
和使用命令行
创建
Gra...
介绍在
Android
中,怎么
创建
buildSrc
插件
,以及怎么用更方便的命令行方式,来
创建
独立的
Gradle
插件
_gra...
赞
踩
article
Android
GPU
Inspector...
Google发布工具
Android
GPU
Inspector 2020年3月24日,Google正式推出了Androi...
赞
踩
article
Android 获取
GPU
频率
_安卓
java
获取
gpu
频率
...
1.
GPU
相关参数目录/d/ged/hal/Z91:/d/ged/hal # ls -allls -alltotal...
赞
踩
article
android
adb
interface
驱动
_
谷歌
发布安卓
GPU
工具:优化手机
GPU
性能...
(给安卓开发精选加星标)转自:快科技news.mydrivers.com/1/679/679606.htm去年高通发布骁...
赞
踩
article
Android
GPU
检查器 (
AGI
)_
android
gpu
inspector
...
//////////////////////////////////////////////////////////使用...
赞
踩
article
android
studio
显示图形_
Android
游戏
开发速递...
作者 /Greg Hartrell, Head of Product Management, Games on Andr...
赞
踩
article
ShaderJoy
——
GPU
上
的
纹理性能优化实例( 基于
Android
GPU
Inspec...
片段着色器最重要
的
任务就是从纹理当中获取和过滤像素值。与其相关
的
GPU
性能指标可以被总结为三类:带宽 缓存行为(ca...
赞
踩
article
Android
Studio
GPU/CPU/Network/Memory
monitor
使用_an...
cpu
monitor
用法参考问题原因: AS 1.4版本以后开始支持GPU
monitor
,到AS 3.0把它去掉了,...
赞
踩
article
Android
性能
分析
工具
介绍
(
非常
详细
)
从零基础入门到精通,看完这一篇就够了
(
附安装包
)
...
黑客与画家Paul Graham 在其著作 中断言:“不同语言的执行效率差距正变得越来越大,所以
性能
分析
器
(
profil...
赞
踩
article
Android
GPU
呈现
模式分析
功能,
手机
流畅
度。仅供参考_有些
手机
怎么找不到gpu
呈现
模式分析
...
手机
的
流畅
度直接影响使用体验,很多小伙们非常在意这一点,而
手机
流畅
与否除了取决于系统本身的优化和元件的老化程度,与一些外...
赞
踩
article
Android
App
性能分析工具(一)——
GPU
渲染
分析_测试手机
gpu
渲染
网站...
我尽量不打错别字,用词准确,不造成阅读障碍。一.
GPU
渲染
速度该工具在“开发者选项”里面,是用来展示应用每一帧中
渲染
消耗...
赞
踩
article
Android
2023
最
新
最
全面
性能
分析
工具
介绍
(
非常
详细)从零基础入门到精通
,
看完这一篇就够了
(
...
Metric 类型的另外一个好处是它的内容格式是比较固定的
,
因此可以通过预编码的方式进行数据存储
,
空间的利用率会更紧凑进...
赞
踩
article
游戏
优化利器 |
Android
GPU
Inspector
开放
Beta
测试版...
作者 / Jay Kong,
游戏
和图形产品经理随着
Android
11 在 Pixel 上的推出,
Android
G...
赞
踩
article
Android
15 首个
开发者
预览版
到来...
作者 / 工程副总裁 Dave Burke
Android
15 的首个
开发者
预览版
现已发布,以便各位
开发者
能与我们通力协...
赞
踩
相关标签
android
传感器
陀螺仪
加速度
Cypher
加解密
android studio
ide
获取GPU频率
android adb interface 驱动
android phone驱动
android studio 手机调试
android studio 连接手机调试
android studio手机与蓝牙收发数据
android studio连接手机
游戏引擎
性能优化
android studio 显示图形
android studio 集成ffmpeg
android studio下载后sdk
android studio如何设置adb时间
android studio导出apk
unity 检测不到已安装的android sdk