内容提供器Provider访问报错

ContentProvider跨程序使用报错:Failed to find provider info for com.example.databasestore.provider 在api29之前,只需要在自定义的provider的应用(eg:DatabaseStore)的AndroidManifest中设置好provider属性即可使用,export="true"确保其他应用程序可以调用本应用的provider,eg: <application> ... <provider android:name=".DatabaseProvider" android:authorities="com.example.data 阅读详情

Failed to find provider info for com.example.databasetest.provider,Unknown URL content:..

1、问题描述

在学习《第一行代码第二版》自定义内容提供器Provider时,出现了访问不了定义了Provider的数据库的情况。观察Logcat得到如下几种报错。

  • 主要报错
    java.lang.IllegalArgumentException: Unknown URL content:…
    Failed to find provider info for com.xiaomi.databasetest.provider
    permission denied
    

2、探究原因

因为测试用的模拟器的SDK是API 30的,该版本(Android 11)的更新,改变了当前应用于本机其他应用进行交互的方式,由此若按照一些教程的例程去学习,会出现以上的一些访问权限问题。

3、解决方案

  • 第一种方案:在需要访问其他应用的Provider的应用的Manifest中加入元素,在该元素内声明想要访问的其他应用资源。

    databasetest内定义的Provider,就在queries内写:

     <?xml version="1.0" encoding="utf-8"?>
      <manifest 
            xmlns:android="http://schemas.android.com/apk/res/android"
            package="com.xiaomi.providertest">
      <!--    <uses-permission android:name="DatabaseProvider._READ_PERMISSION" />-->
      <!--    <uses-permission android:name="DatabaseProvider._WRITE_PERMISSION" />-->
      <queries>
          <package android:name="com.xiaomi.databasetest" />
          
      <!-- 也可以单独指定provider -->
      <!--        <provider android:authorities="com.xiaomi.databasetest.provider" />-->   
      </queries>
           <application> 
               ...
            </application>
       </manifest>
    
  • 第二种方案:如果第一种方案不生效,尝试在定义Provider的应用Manifest中声明可访问权限,然后在需要访问Provider的应用的Manifest中获取权限。

    DatabaseTest的Manifest设置权限

    <?xml version="1.0" encoding="utf-8"?>
    <manifest 
         xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.xiaomi.databasetest">
    <permission
      android:name="DatabaseProvider._READ_PERMISSION"
      android:protectionLevel="normal" />
     <permission
      android:name="DatabaseProvider._WRITE_PERMISSION"
      android:protectionLevel="normal" />
    <application ...>
       ...
       <provider
               android:name=".DatabaseProvider"
               android:authorities="com.xiaomi.databasetest.provider"
               android:enabled="true"
               android:exported="true">
       </provider>
       ...
    </application>
    

providerTest的Manifest 设置权限

<?xml version="1.0" encoding="utf-8"?>
      <manifest 
          xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.xiaomi.providertest">

    	<uses-permission android:name="DatabaseProvider._READ_PERMISSION" 			/>
      <uses-permission android:name="DatabaseProvider._WRITE_PERMISSION" />

       <queries>
        <package android:name="com.xiaomi.databasetest" />
        
        <!-- 也可以单独指定provider -->
        <!--        <provider android:authorities="com.xiaomi.databasetest.provider" />-->
    </queries>
     <application>
        ...
     </application>
   </manifest>
   


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 阅读详情

相关推荐

Android 8.0 java.lang.SecurityException: Failed to find provider <authority> for user 0 产生原因以及解决方法。

Android 版本每次的更新除了新功能之外,通常还伴随着各种 API 的更新以及随之而来的异常,8.0 的更新也不例外。 当我们在 8.0 或 8.1 系统上使用 26 或以上的版本的 SDK 时,调用 ContentResolver 的 notifyChange 方法通知数据更新,或者调用 ContentResolver 的 registerContentObserver 方法监听数据变化时...

mikechenmj的博客 1万+

Failed to find provider info for xxx,Unknown URL content 的问题归因和解决办法

1.问题背景     在学习《安卓第一行代码》第三版关于ContentProvider的内容时,出现了无法找到provider Uri的问题,导致没有办法执行后续insert、update等方法。为了避免大家踩坑,做一些小记录。 2.问题归因     出现这种情况的原因主要是有以下几种: 未勾选复选框     在使用AndroidStudio生成自定义ContentProvider的时候,未勾选Enable和Exported选项,导致自定义的ContentProvider无法被其他应用程序访问: 拼写问

weixin_41607932的博客 7031

Android非Root环境下跨应用私有数据访问:Content Provider与备份解析实战

在Android开发中,应用沙盒机制通过Linux文件权限和SELinux策略严格隔离了各应用的私有数据存储空间,这是Android安全模型的核心基础。其原理是为每个应用分配独立的UID,并设置严格的访问控制策略,确保数据安全。这一设计虽然保障了用户隐私,但在数据备份、迁移、自动化测试等合法场景下,也带来了跨应用数据访问的技术挑战。为了在非Root环境下实现这一目标,开发者可以深入挖掘Android系统自身提供的官方机制,例如利用Content Provider这一标准数据共享组件,或通过Android备份

weixin_30786657的博客 298

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

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

chaozhung的专栏 2414

ComfyUI+MiniMax H3:从零搭建AI有声视频生成工作流

AI视频生成正在从单纯画面输出走向音视频联合生成,让内容不仅可见,而且可听。ComfyUI以节点式编排将模型加载、提示词编码、采样、解码与视频合成等环节模块化,再结合MiniMax海螺H3模型的原生音频输出能力,即可构建从文本提示直接产出带声视频的自动化流水线。这套组合的技术价值在于统一了可控性、可复用性与可扩展性,创作者能精细调节种子、步数、CFG等参数,并自由接入放大、补帧、混音等后处理节点,突破在线平台的黑盒限制。在应用场景上,它特别适合短视频素材批量生产、漫剧分镜、电商产品演示与创意提案,大幅降低制

weixin_34274029的博客 327

别再死记硬背了!用‘小乌龟’实战图解ROS1核心指令(rosnode/rostopic/rosparam保姆级手册)

本文通过经典的turtlesim乌龟仿真器,以可视化实战方式讲解ROS1核心指令(rosnode/rostopic/rosparam),帮助初学者摆脱死记硬背,在操控乌龟的过程中轻松掌握节点管理、话题通信和参数设置等ROS1核心概念。

weixin_28731223的博客 370

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 探究原因 一番研究后发现是因为测试用的模拟器的

殇尘的博客 8660

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

Android基础学习之Provider(内容提供器)

Provider是Android四大组件之一,是一种数据共享机制(封装数据的接口规范)。是一个数据库的代理,实现跨应用间的数据共享,类似于window服务本身不负责启动和关闭,多个应用可同时访问统一provider。主要类: ContentProvider 类 ContentProvider 对象将程序内部数据向其他程序公开 ContentResolver 类 其他程序通过ContentRe

青芸的博客 1万+

【CUT&TAG分析-加了spike in的样品】

使用 Bowtie2 或 Subread (subjunc) 来构建大肠杆菌的索引。bowtie2比对时设置参数–local, 局部比对。

weixin_57975238的博客 1396

SWD下载调试接口原理深度剖析

作为ARM嵌入式工程师,下载调试器都应该知道,但你真正了解SWD如何下载调试的么?ARM 芯片通过什么物理接口和什么方式连接完全取决于芯片Debug子系统的架构如何?

zhuwade的博客 1万+

《第一行代码》总结之内容提供器、多媒体(四)

第七章跨程序共享数据——探索内容提供器 Android持久化技术一章中所保存的数据都只能在当前应用程序中访问,但跨程序数据共享是由Content Provider提供的,譬如说:电话薄、短信、媒体库中的信息。 7.1内容提供器简介 不同程序之间共享数...

云瀚的自习室 1223

PCIe Electrical PHY(4)-PCIE SPEC第8章指标讲解

1.1 PCIE TX SPEC TX主要关心两类参数,一类是Voltage Parameters,一类是Jitter Parameters。 其中Voltage相关参数主要关心不同preset下差分电压幅度的准确性。以及共模电压的稳定性。 PCIE spec中对Jitter相关的参数测量定义如下: 分为两大类:DDJ(Data dependent Jitter)和UJ(Uncorrelated ...

maxwell2ic的博客 5949

java.lang.IllegalArgumentException: Unknown URL content://com.example.datebasetest.provider/book/报错

这行代码解决了我的问题,原因的话,在android版本10中引入了分区存储这个概念,也叫沙盒存储机制。刚开始以为是URI写错了反复检查,发现没有问题,查询了GPT也没有解决最后在一篇博客找到了解决办法。应用程序请求的数据都要通过权限检测,不符合要求不会被放行。沙盒机制是一种安全机制,用于防止应用读取其他应用的数据。学习Android的创建内容提供器的时候遇到了这个报错。应用程序不能翻过自己的目录,去访问公共目录。而上面哪行代码就是设置使用原有存储机制的。每个应用程序都有自己的存储空间。

Sean_Word的博客 738

YOLO26 魔术师专栏|全网独家首发!2026 原创级创新赋能 CV 全场景

基于 YOLO26 核心架构迭代,融合原创自研、2026 AAAI/CVPR/ICCV 顶会前沿成果,打造更高效、更灵活、更具创新性的计算机视觉解决方案!

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4356

BF8815A

了解ADBMS1818芯片的人会发现,这款BF8815B和1818有着很多相似的东西,当你了解其中一款AFE之后,另一款你的上手也会特别快,下面文章是我针对1818梳理的一些重要知识点,此篇文章主要讲解BF8815B的一些差异点。

m0_61973119的博客 561

contentprovider踩坑之路之Failed to find provider info for com.example.app.provider和cursor=null空指针问题

contentprovider踩坑之路之Failed to find provider info for com.example.app.provider和cursor=null空指针问题

weixin_51205269的博客 3482

23、关联挖掘到相关性分析及约束关联挖掘详解

本文详细解析了从关联挖掘到相关性分析的发展过程,以及基于约束的关联挖掘方法。文章介绍了传统支持-置信度框架的局限性,并引入Lift、χ2、All Confidence和Cosine等度量来评估规则的相关性。同时探讨了多种规则约束在数据挖掘中的应用机制及其优化效果,旨在提高挖掘效率和规则质量。最后结合实际案例说明如何综合运用相关性度量与规则约束以满足业务需求,并展望了数据挖掘技术的未来发展。

aa123的博客 102

Android内容提供器

目标:A程序提供外部访问接口 B程序通过这个接口来访问A程序上面的数据(增删查改) 因为所有的增删查改操作都是需要匹配到想的内容URI格式才能进行的,而我们在写接口的时候自然不会在其添加隐私数据,所以这部分数据无法被外部程序访问到。 下面上实例(A程序) 1、新建类去继承ContentProvider来创建一个自己的内容提供器,Co

月满轩尼诗 876

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

android知识点整理(二) 跨程序内容提供器

内容提供器(Content Provider)理论好无聊啊啊啊啊啊啊还是实践有意思啊啊啊不慌不慌整理完之后就去吃饭回来洗衣服啊啊啊 有9个危险权限。。而且是权限组 1.从奇怪的例子开始 (运行时权限) Intent intent = new Intent(Intent.ACTION_CALL); intent.setData(Uri.pa...

ansu1440的博客 159

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 7.0调用相机拍照 报错 FileUriExposedException

拍照 7.0

liujian_30的博客 412

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android学习之Provider:TaoToken 统一 Key 接入与内容提供器调试实战

Android ContentProvider 调试实战:从 adb 查询失败入手,搭建最小可用 Provider,理清 authorities、exported 与 URI 匹配,并用 TaoToken 统一 Key 接入模型侧处理数据。附可复制配置与 401、SecurityException 排查,官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_42590539的博客 8

解决 SecurityException: Permission Denial: opening provider问题

在练习内容提供器(ContentProvider)时,遇到问题报错信息: java.lang.SecurityException: Permission Denial: opening provider

众妙之门 6576

Android出现android.os.FileUriExposedException: exposed beyond app through Intent.getData()问题

错误提示:android.os.FileUriExposedException: exposed beyond app through Intent.getData() 出现场景:在实现拼图游戏App中选择拍照后图片作为拼图背景时,App闪退报错。 出现原因:从Android7.0系统开始,直接使用本地真实路径的Uri被认为是不安全的,会抛出FileUriExposedException异常。...

qq_41853047的博客 1982

android从放弃到坚持放弃第七课

跨程序共享数据,使用内部提供器跨程序共享数据使用内部提供器 简介 运行时权限 Android权限机制详解 在程序运行时申请权限 访问其他程序中的数据 ContentResolver基本用法 举个例子读取系统联系人 实现自己的内容提供器 创建内容提供器的步骤 实践 Git 忽略文件 查看修改内容 查看提交记录 问题 生了一场病,拖了好久,⊙﹏⊙ 简介内部提供器主要用于在不同的应用程序之间实现数据共享

JayWRZZ的博客 841
上一篇: git 提交编译器nano 修改为vim编译器(ubuntu )
下一篇: ssh远程连接与解决bug
漂吧
博客等级 码龄8年 15粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值