跨程序共享数据,探究内容提供器

Android新手爬坑之路——Failed to find provider info for com.example.databasetest.provider 最近在看《第一行代码 Android 第三版》 众所周知,新手都是一个坑一个坑爬过来的。。。 在我学习到ProviderTest这个项目的时候,出现了一个奇怪的错误,在我点击Add To Book按钮的时候,程序崩溃了,但是我前面databasetest项目也创建好了,也写好了provider,在模拟器上运行过一遍了,但点击ProviderTest里的按钮的时候还是程序崩溃了,于是乎给按钮的操作加上了捕获异常的片段 try{ val newUri = contentResolver.insert(ur 阅读详情

内容提供器简介

  • 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时能保证被访数据的安全性。目前,使用内容提供器是 Android 实现跨程序共享数据的标准方式
  • 内容提供器的用法一般有两种:
    • 一种是使用现有的内容提供器来读取和操作相应程序中的数据
    • 另一种是创建我们自己的内容提供器来为我们的程序提供外部访问的接口

访问其他程序中的数据

ContentResolver的基本用法

  • 可以通过Context的getContentResolver()方法获取到该类的实例
  • ContentResolver中提供了一系列的方法用于对数据进行CRUD操作
    • insert()用于添加数据
    • update()用于更新数据
    • delete()用于删除数据
    • query()用于查询数据
  • ContentResolver 中的增删改查方法都是不接收表名参数的,而是使用一个 Uri 参数代替,这个参数被称为内容 URI
  • 内容URI包括两部分
    • 权限(authority):权限是用于对不同的应用程序做区分的,一般为了避免冲突,都会采用程序包名的方式来进行命名
    • 路径(path):路径则是用于对同一应用程序中不同的表做区分的,通常都会添加到权限的后面
  • 还需要在字符串的头部加上协议声明,因此,内容URI最标准的格式写法如下:

    content://com.example.app.provider/table1
    content://com.example.app.provider/table2
    
  • 得到内容URI之后,还需要将它解析成Uri对象
  • ContentResolve的query()方法里的参数
    这里写图片描述

创建自己的内容提供器

创建内容提供器的步骤

  • 新建一个类去继承 ContentProvider 的方式来创建一个自己的内容提供器
  • ContentProvider 类中有六个抽象方法,我们在使用子类继承它的时候,需要将这六个方法全部重写
    • onCreate():初始化内容构造器时调用
    • query():从内容提供器中查询数据
    • insert():想内容提供器添加数据
    • update():更新内容提供器中已有的数据
    • delete():从内容提供器删除数据
    • getType():根据传入的内容URI来返回相应的MIMW类型
  • 内容URI的格式主要有两种:
    • 以路径结尾就表示期望访问该表中的所有数据
    • 以id结尾就表示期望访问该表中拥有相应id的数据
  • 使用通配符的方式来分别匹配这两种格式的内容 URI
    • *:表示匹配任意长度的任意字符
    • *:表示匹配任意长度的任意字符
  • 借助 UriMatcher这个类就可以轻松地实现匹配内容 URI的功能
  • 一个内容URI所对应的MIME字符串主要由三部分组成,Android对这三部分做了如下规定:
    • 必须以vnd开头
    • 如果内容 URI 以路径结尾,则后接 android.cursor.dir/,如果内容 URI 以 id 结尾,则后接 android.cursor.item/
    • 最后接上 vnd.<authority>.<path>

Git时间,版本控制工具进阶

忽略文件

  • 通过.ignore文件来标识
  • 在.ignore文件中可以使用“*”通配符

查看修改的内容

  • 使用git status命令查看文件修改情况
  • 使用git diff命令查看文件修改的内容

撤销未修改提交

  • 使用git checkout命令撤销
  • 这种撤销方式只适用于那些还没有执行过 add 命令的文件
  • 对于已添加的文件可以使用git reset取消添加后再使用git checkout来取消

查看提交记录

  • 使用git log可以查看历史提交记录
  • 在命令中指定该记录的 id,并加上-1 参数表示我们只想看到一行记录
  • 在命令中加入-p可以查看修改内容
SAR成像处理基本知识2——图像尺寸与回波尺寸的关系 阅读本文前,请先了解上一篇文章(SAR成像处理基本知识1——常用专用名词解释) 1. SAR图像尺寸预估方法 以C波段2m@20km的SAR图像为例,假设天线中心下视角为35° ,说明图像尺寸的估计方法。 1.1 距离向尺寸估计 地距分辨率为2m时,距离向分辨率约为1.15m,则要求信号带宽不小于130MHz,假设信号带宽为150MHz,采样率为180MHz,那么距离向分辨单元为0.833m。 地距幅宽为20km时,距离向幅宽约为20*sind(3... 阅读详情

相关推荐

CH340驱动安装全攻略:从Windows到MacOS的避坑指南(2025最新版)

本文提供2025年最新版CH340驱动安装全攻略,涵盖Windows、MacOS和Linux三大操作系统。详细解析了驱动安装的核心原理、标准流程,并针对Windows设备管理器报错、MacOS系统安全限制等常见“坑点”提供了深度排错与解决方案,旨在帮助开发者快速稳定地完成USB转串口通信配置。

earth的博客 426

Failed to find provider info for com.example.databasetest.provider,Unknown URL content:...等问题简单解决方法

问题描述 在学习《第一行代码》(第二版)自定义内容提供器Provider时,出现了访问不了定义了Provider的app的数据库的情况。观察Logcat得到如下几种报错。 主要报错 java.lang.IllegalArgumentException: Unknown URL content:… Failed to find provider info for com.example.databasetest.provider permission denied 探究原因 一番研究后发现是因为测试

qq_30445397的博客 2164

Dify 部署与使用

本文介绍了Dify社区版的快速部署指南,涵盖系统架构、环境配置和初始化流程。Dify采用微服务架构,通过Docker Compose一键部署8个核心容器,包括前端、后端、数据库等组件。部署过程包括克隆代码、配置环境变量和启动服务,首次启动需3-10分钟下载镜像。文章详细讲解了.env文件的配置要点,包括服务地址、数据库连接和向量存储设置,并提供了生产环境安全加固建议。最后通过访问/install页面完成管理员账号初始化,即可开始使用Dify构建AI应用。

海兰 591

各种Android设备屏幕分辨率与适配

转载 : http://blog.csdn.net/shulianghan/article/details/19899193 . 一. 数据采集 源码GitHub地址 :  -- SSH : git@github.com:han1202012/DisplayTest.git; -- HTTP : https://github.com/han1202012/Disp

chaozhung的专栏 2414

别再让信号‘撞墙’了!手把手教你用嘉立创阻抗计算器搞定PCB高速线(附免费压层结构选择)

本文详细介绍了如何使用嘉立创阻抗计算器解决PCB高速线设计中的阻抗匹配问题,避免信号反射和传输损耗。通过免费压层结构选择和五步计算法,帮助工程师快速掌握USB3.0差分线等高速信号的设计技巧,提升PCB设计效率和信号质量。

weixin_30736301的博客 278

国产大模型 coding plan 实战决策指南:GLM、Kimi、豆包、abab 四大模型分层选型与工程落地

大模型辅助编程(coding assistant)正从概念验证走向规模化工程落地,其核心已不再是‘能否生成代码’,而是‘如何在真实开发流程中精准赋能’。理解模型能力边界、匹配技术栈特征、构建分层工作流(L1行级补全/L2函数生成/L3模块重构),是实现稳定提效的关键。GLM系列以工程稳定性见长,适合代码审计与测试生成;Kimi-Max凭借200K超长上下文胜任深度重构与合规审查;豆包响应快、框架适配深,是IDE高频补全的理想选择;abab系列则在IoT固件等跨模态场景中展现独特价值。本文聚焦国产模型在金融、

weixin_32238157的博客 427

内容提供器Provider访问报错

Failed to find provider info for com.example.databasetest.provider,Unknown URL content:..1、问题描述2、探究原因3、解决方案 1、问题描述 在学习《第一行代码第二版》自定义内容提供器Provider时,出现了访问不了定义了Provider的数据库的情况。观察Logcat得到如下几种报错。 主要报错java.lang.IllegalArgumentException: Unknown URL content:… Fai

python_start的博客 1553

MATLAB - 使用 RRT 进行挖掘机运动规划

本例演示了如何使用运动规划器在包含障碍物的环境中为挖掘机规划路径。在此示例中,您将以运动树的简化形式为挖掘机建模,然后使用基于采样的运动规划器确定挖掘机在存在障碍物的两个姿势之间的可行路径。在 Simscape™ 多体™ 模型中模拟结果。

机器人控制与仿真应用 1850

Android学习:java.lang.IllegalArgumentException: Unknown URL content:…闪退问题

从《第一行代码:Android 第三版》中,复刻了ProviderTest程序,向DatabaseTest程序的ContentProvider写入数据的时候,遇到按下按钮直接闪退的问题。 查看Logcat,抛出异常: java.lang.IllegalArgumentException: Unknown URL content: Failed to find provider info for com.example.databasetest.provider 仔细检查确定没有拼写错误,一番.

m0_62435521的博客 4845

Python经典编程习题100例:第25例:求各个阶乘的和

不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 本人初学Python,只为熟悉语法编写,大神请勿理会 点击下面链接 Python经典编程100例习题汇总 题目描述: 求1+2!+3!+…+20!的和。 解题思路: > 调用math模块中的factorial函数 代码: import math sum=0 for i in range(1,21): sum+=math.factorial(i) print(sum) ..

优快云 精品推荐 2735

1小时读完100篇文献的正确打开方式

各位同仁好,我是七哥。一个在高校里从事人工智能 相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude 等大模型 学术实操相关问题,多多交流,相互成就,共同进步。文献阅读与整理一般都是最先开始、却也最容易被低估的一步。很多学术同仁一开始就陷入越读越多、越读越乱的状态:论文下载了一大堆,但真正能用来支撑自己观点的内容却始终难以提炼出来。一方面,我们需要通过文献了解该研究领域的整体发展脉络,把握当前学界已经讨论到什么程度;

智能AI让学术科研更容易 49

第7章 跨程序共享数据——探究内容提供器

内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式,内容提供器可以选择只对哪一部分数据进行共享,从而保证我们程序中的隐私数据不会有泄漏的风险。不过在正式开始学习内容提供器之前,我们需要先掌握另外一个非常重要的知识——

Roderick888888的博客 808

基于STM32设计的4G远程视频侦查小车(图传+远程控制+EMQX+MQTT)(204)

当前设计了一款基于STM32F103ZET6主控芯片和废旧Android手机改造的4G侦查小车。该设计充分利用已有的智能手机硬件资源,实现摄像头画面的实时采集与上传,以及远程控制功能。这样的设计不仅降低了成本,而且充分利用了废旧手机中高性能的硬件资源,如摄像头、4G通信模块和电池等,实现了资源的有效循环利用。

2528

Android——跨程序共享数据,探究内容提供器

内容提供器主要用于在不同应用程序之间实现数据共享功能,提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性,内容提供器是Android实现跨程序共享数据的标准方式。不同于文件存储和SharedPreferences存储中的两种全局可读写操作模式内容提供器可以选择只对哪一部分数据进行共享。 1 运行时权限 1.2 在程序运行时申请权限 新建一个RuntimePermissionTest项目,使用CALL_PHONE这个权限作为本小节的示例 <LinearLayout

xuan的博客 447

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

安卓 跨程序共享数据———探究内容提供器

内容提供器

weixin_50961942的博客 629

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

8月5日 第7章跨程序共享数据——探究内容提供器

注意当访问单条数据的时候有一个细节,这里调用了 Uri 对象的 getPathSegments()方法,它会将内容 URI 权限之后的部分以“/”符号进行分割,并把分割后 的结果放入到一个字符串列表中,那这个列表的第 0 个位置存放的就是路径,第 1 个位置存放的就是 id。这样,当调用 UriMatcher 的 match()方法时,就可以将一个 Uri 对象传入, 返回值是某个能够匹配这个 Uri 对象所对应的自定义代码,利用这个代码,我们就可以判断出调 用方期望访问的是哪张表中的数据了。

lin_li17的博客 2125

第七章 跨程序共享数据-探究内容提供器

7.1 内容提供器简介 不同程序之间实现数据共享的载体 7.2 运行时权限 7.2.1 android 权限机制详解 分二大类权限,一为普通权限,一为危险权限 危险权限,要用户手动点击授权才行 public class MainActivity extends AppCompatActivity { private Butt...

julicliy的博客 200

《第7章 跨程序共享数据——探究内容提供器》总结

上节学过的数据持久化方式:文件存储,SharedPreferences存储,都只提供了MODE_PRIVATE一种访问模式,即只能在本程序中访问。 在夸程序数据共享方面,安卓官方推荐使用内容提供器技术 7.1内容提供器简介 内容提供器主要用于在不同程序间共享数据,并且提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同事还能保证被访数据的安全性 7.2 运行时权限 安卓将权限分为了...

qq_39800266的博客 290

Android跨程序共享数据,探究内容提供器

《Android第一行代码》 内容提供器简介 内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能够保证被访问数据的安全性。目前,使用内容提供器是Android实现扩平台共享数据的标准方式。不同文件储存和SharedPreferences储存中的两种全局可读写操作模式,内容提供器可以选择只

贼腻害的博客 674

[《第一行Android代码》读书笔记] 第7章 跨程序共享数据——探究内容提供器

第七章 跨程序共享数据——探究内容提供器 ​ 数据持久化技术,包括文件存储、SharedPreferences存储以及数据库存储,都只能在当前应用程序中访问。跨程序数据共享需要用到另一种技术——内容提供器。 7.1 内容提供器简介 ​ 内容提供器(Content Provider)主要用于不同的应用程序之间实现数据共享的功能,同时保证被访数据的安全性,是实现跨程序共享数据的标准方式。 7....

weixin_41297079的博客 1391

第二行代码学习笔记——第七章:跨程序共享数据——探究内容提供器

本章要点实现跨程序共享数据:内容提供器技术(更加安全可靠)。共享数据给其他应用程序是因为一些程序让其他程序进行二次开发的基础性数据。比如:联系人,短信,媒体等程序都实现了跨程序共享数据的功能(内容提供器)。7.1 内容提供者简介内容提供器(Content Provider)主要用于不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据

JiangWeiHu的博客 2079

《第一行代码》 第七章 跨程序共享数据——探究内容提供器

7.1 内容提供器简介    内容提供器:用于在不同的应用程序之间实现数据共享功能,是Android实现跨程序共享数据的标准方式。能够保证被访数据的安全性。    可以选择只对某部分数据进行共享。7.2 运行时权限7.2.1 Android 权限机制详解1、在学习通知广播那章曾经用过,我们在AndroidManifest.xml中添加权限声明。2、6.0系统中加入了运行时权限功能,也就是说,用户不...

一不小心吃太撑了 1468

Android学习第十天—跨程序共享数据(探究内容提供器)

其主要目的就是实现跨程序的数据共享,下面进行简单介绍。 内容提供器简介 重要用于不同应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。 在正式开始学习之前我们要学习一个重点—Android中的权限的问题,不光是现在在以后的开发过程中我们也会经常使用到权限。 运行时的权限 Android权限机制解...

菜鸟算法 308

第七章 跨程序共享数据-探究内容提供器

第一行代码 第二版 内容提供者

薛凯的博客 617

第七章:跨程序共享数据-探究内容提供器

运行时权限 Android 6.0 之后的系统提供了两种权限: 普通权限。例如:访问网络状态、监控开机是否完成等。这种权限会在安装 APP 时询问用户是否同意。 危险权限,也就是说运行时权限,需要在程序运行时动态获取用户许可。例如:定位、拨打电话等。这种权限会在 APP 使用到相关功能时询问用户是否同意。 这两种权限都可以在应用设置里面关闭。 内容提供器是什么? 内容提供器是 Android ...

weixin_30240349的博客 135
上一篇: 数据存储全方案,详解持久化技术
下一篇: 丰富你的程序,运用手机多媒体
guotao967
博客等级 码龄11年 1粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值