首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在安卓30中使用`FileProvider.getUriForFile`进行公共文件夹抛出`找不到已配置的根`

的问题是由于在Android 10及以上版本中,对文件访问权限进行了更严格的限制,需要通过FileProvider来提供文件的访问权限。

解决这个问题的步骤如下:

  1. 首先,在AndroidManifest.xml文件中添加FileProvider的配置。在<application>标签内添加以下代码:
代码语言:txt
复制
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 在res目录下创建一个xml文件夹,并在xml文件夹下创建一个名为file_paths.xml的文件。文件内容如下:
代码语言:txt
复制
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="." />
</paths>
  1. 确保你的代码中使用了正确的authority。在调用FileProvider.getUriForFile方法时,第一个参数应该是context,第二个参数应该是authority,即上述配置中的${applicationId}.fileprovider
  2. 最后,检查你的应用是否具有读取外部存储的权限。在AndroidManifest.xml文件中添加以下权限:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

以上步骤可以解决使用FileProvider.getUriForFile时出现找不到已配置的根的问题。这样可以确保你的应用在Android 10及以上版本中能够正确地访问公共文件夹。

推荐的腾讯云相关产品:腾讯云对象存储(COS)。

腾讯云对象存储(COS)是一种安全、高可靠、低成本、高扩展性的云端存储服务,适用于存储和处理任意类型的文件、图片、音视频等海量数据。它提供了简单易用的API接口,可以方便地在应用程序中进行文件的上传、下载、管理等操作。腾讯云对象存储还具备数据冗余备份、数据加密、访问权限控制等功能,确保数据的安全性和可靠性。

产品介绍链接地址:腾讯云对象存储(COS)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android适配全面总结(二)----版本适配

我们开发中,会对不同安版本做适配,比如我之前做过项目中最低兼容到4.4,最高兼容是最新系统7.1,由于不同版本系统中部分API版本也不同,我就要对这些API做特殊处理。...(API级别26中弃用。使用getLargeIcon(),它支持更多种图标源。)... (二)配置你要获取文件所在文件夹 --> 创建一个xml文件,比如file_demo.xml,文件内容如下: <paths xmlns:android...,可以参考这篇博客 解决7.0拍照,相册选择崩溃问题(包括压缩图片在内) ---- 五、关于Android7.0相机闪退以及相册获取不到图片问题 1、没有动态申请权限,按照上述思路去做就好了。...此权限与其他运行时权限一样,会与应用绑定,安装时进行提示,确保用户授予使用安装来源权限后,此权限才会提示用户安装应用。

2.4K10
  • 2018年开发环境搭建

    首先设置ANDROID_SDK_ROOT环境变量,值设置为SDK文件夹存放位置。 然后设置ANDROID_AVD_HOME环境变量,值设置为模拟器存放位置。...我出现错误是找不到下载目录,仔细检查后发现,AS会尝试下载到以前用户临时文件夹中,但是我用户名改过了,所以就出错了。我解决办法是把原来SDK全删了重新下载一次。...很遗憾我用AMD锐龙处理器,所以无法运行x86模拟器,准确说是无法关闭HyperV情况下运行,因为我同时还要运行其他虚拟机软件。所以只能使用另一种办法,那就是直接在手机上运行。...当然需要注意是这些选项会直接在手机上安装应用。所以最好只自己电脑上开启USB调试,公共场合不要开启。...由于我手机小米8P稳定版尚未推送,所以还正好无法运行P应用,我还特地gradle配置文件中将minSdkVersion修改为27,才能正好运行。

    1.7K20

    React Native学习笔记(一)—— Win11子系统安装与使用 - Windows Subsystem for Android - WSA

    子系统默认会分配4G内存,建议16G内存以上电脑使用。 二、安装 Windows 虚拟化支持 2.1....如果你电脑是家庭版,找不到Hyper-v,则可以使用下面的步骤,否则不需要。...WSA使用配置 3.1、第一次运行 子系统资源一项,设置为按需要时,每次运行app时都要重新启动WSA,需要花费一定启动时间,关闭app时则自动关闭WSA。...an APK,第一次运行会提示ADB is missing(找不到adb),点击 Install下载adb工具包,下载完成后点击 Select Folder选择要保存到文件夹(不能删除,否则需要重新下载...之后下载大多数应用程序只需使用即可,而无需使用繁琐adb工具。

    2.5K41

    【Webpack】315- 手把手教你搭建基于 webpack4 vue2 多页应用

    起初想着使用 vue-cli3 去创建,因为 vue-cli3 本身带有多页面配置选项,直接修改 pages 这个选项就可以完成多页面配置,需要小伙伴可以进行参考,链接:vue-cli3 pages...但是因为要兼容 4.4 以下系统(有一些请求库中包含 E6 语法,如:axios, 4.4 以下系统无法识别,所以会导致打开页面是空白问题),pages 入口不能配置数组,没办法添加 babel-polyfill... 4.4 以下手机兼容 页面 router 和 支持文件夹层级打包 这两种方式都是为了支持同一个项目下有多个页面,比如我们做一个简易版商城也是在这个多页面中,这个时候商城可以使用 router... 4.4 以下兼容问题 这个问题说起来很多人都不想弄,其实我也不想,但是没办法啊,公司用户群体中机占了很大一部分,并且 4.4 以下机型占了 20%,这样情况就必须要对页面做兼容了。...这个时候我们可以使用两种方式: 使用vue-router控制路由 这个我觉得不用多说了吧,需要使用路由文件夹下创建一个router.js,并且引入vue-router,一定要在某个文件夹下创建哦,否则几个页面公用一个

    1.1K10

    【2023最新版】Windows11家庭版:子系统(WSA)安装及使用教程【全网最详细】

    子系统应用程序包(.msixbundle文件)E:\Software\Install\Android\路径下,注意确保替换命令中文件路径为实际存放Android子系统应用程序包路径。...spm=1001.2014.3001.5506 三、使用adb命令连接子系统来安装apk 1. Microsoft Store下载apk安装程序 2....\adb connect 127.0.0.1:58526 允许ADB调试 apk安装程序内 接下来即可使用apk安装程序安装程序 6....安装程序打开)无法安装 如图所示,无法点击安装 解决方案 重启,或者点击 以确保启动WSA 再次输入,即可连接成功 adb connect 127.0.0.1:58526 此时,双击apk文件 四、配置子系统...实验性功能 共享用户文件夹 需要重启(彻底重启,不是点击右上角X) Windows文件 WSA内

    36910

    手把手教你搭建基于 webpack4 vue2 多页应用

    起初想着使用 vue-cli3 去创建,因为 vue-cli3 本身带有多页面配置选项,直接修改 pages 这个选项就可以完成多页面配置,需要小伙伴可以进行参考,链接:vue-cli3 pages...但是因为要兼容 4.4 以下系统(有一些请求库中包含 E6 语法,如:axios, 4.4 以下系统无法识别,所以会导致打开页面是空白问题),pages 入口不能配置数组,没办法添加 babel-polyfill... 4.4 以下手机兼容 页面 router 和 支持文件夹层级打包 这两种方式都是为了支持同一个项目下有多个页面,比如我们做一个简易版商城也是在这个多页面中,这个时候商城可以使用 router... 4.4 以下兼容问题 这个问题说起来很多人都不想弄,其实我也不想,但是没办法啊,公司用户群体中机占了很大一部分,并且 4.4 以下机型占了 20%,这样情况就必须要对页面做兼容了。...这个时候我们可以使用两种方式: 使用vue-router控制路由 这个我觉得不用多说了吧,需要使用路由文件夹下创建一个router.js,并且引入vue-router,一定要在某个文件夹下创建哦,否则几个页面公用一个

    1.1K10

    微信小程序性能极致优化——独立分包和性能测速上报

    经过对小程序启动过程分析,以及此 Webview 页面较少依赖小程序公共方法和公共组件特点,选择了对页面拆分独立分包方式进行优化。活动页独立分包相比于主包体积减小了 93%。...页面参数中包含页面地址(不用从配置平台换取 url)情况下,整个打开过程约为 小程序启动时长 + H5 加载时长。...common-act 页面目前是普通分包,代码包准备和代码注入阶段都执行了完整主包。加载和处理主包过程中由于同步准备了很多核心页面依赖基础信息和公共方法,耗时较长。...(文档可见:独立分包) 由于独立分包中不能依赖主包和其他分包中内容,相关依赖需要全部位于页面文件夹中,分析页面涉及公共依赖包括: 基础npm包依赖:@tencent/imwxutils(封装了一些小程序基础方法...iOS 高、中端机型,高端机型优化后启动时间总体 2s 以内。

    1.7K20

    腾讯课堂小程序性能极致优化——独立分包和性能测速上报

    经过对小程序启动过程分析,以及此 Webview 页面较少依赖小程序公共方法和公共组件特点,选择了对页面拆分独立分包方式进行优化。活动页独立分包相比于主包体积减小了 93%。...页面参数中包含页面地址(不用从配置平台换取 url)情况下,整个打开过程约为 小程序启动时长 + H5 加载时长。...common-act 页面目前是普通分包,代码包准备和代码注入阶段都执行了完整主包。加载和处理主包过程中由于同步准备了很多核心页面依赖基础信息和公共方法,耗时较长。...(文档可见:独立分包) 由于独立分包中不能依赖主包和其他分包中内容,相关依赖需要全部位于页面文件夹中,分析页面涉及公共依赖包括: 基础npm包依赖:@tencent/imwxutils(封装了一些小程序基础方法...iOS 高、中端机型,高端机型优化后启动时间总体 2s 以内。

    74520

    远程控制手机方法只要5个步骤,根本不用Root!_通过usb控制手机

    现在你在被控手机上安装AirDroid不需要Root这个软件配置了对应【免Root】流程只要跟着下面的指引操作你也可以免Root状态下远程控制你手机 前提条件 准备一台安装了AirDroid电脑一...第二步&用USB线连接手机和电脑Windows系统或macOS系统都可以 如果你手机恰好运行8.0及以上系统记得弹窗中选择“仅充电”模式。...第三步允许计算机进行调试 首次使用USB数据线将设备连接到电脑过程中设备上会有另一个对话框弹出“是否允许USB调试请勾选 “始终允许使用这台计算机进行调试”然后点击“确定”。...如果未出现“是否允许USB调试”弹窗请参照以下步骤进行问题排查: 开发者选项中点击“撤消USB调试授权” 然后重新插拔USB线 更换一USB线或电脑USB插口 重启手机和电脑 第四步打开...如果是苹果手机做控制端请在浏览器打开网址web.airdroid.cn 登录并点击【远程控制】连接成功后就可以顺利操作免Root设备。

    1.2K10

    体验一下使用 ArkUI 进行 HarmonyOS 开发并与 Compose 简单对比

    转头两个都还没学明白呢,大佬们又在说鸿蒙下次更新不兼容了,再不学鸿蒙开发就等着失业吧。啊?这?这能忍?这必须学啊!于是抽出时间来简单了解了一下使用 ArkUI 鸿蒙应用开发。...安装好后,首次打开 DevEco Studio 会要求你进行环境下载和配置,因为鸿蒙开发使用 ArkUI 框架是基于 ArkTS 语言,而 ArkTS 语言是 TS 语言超集,所以我们需要配置对应环境...另外,该目录下还有一个 resources 文件夹,用于存放公共资源文件,它包括两个文件夹:./base/element 主要存放公共字符串、布局文件等资源。..../entry/src/main/resources 目录用于存放模块公共多媒体、字符串及布局文件等资源,分别存放在element、media文件夹中。 ....只是依赖管理系统变了(是 gradle ),配置文件变了(是 groovy 或 kts 鸿蒙是 json)。其他结构对于开发者来说基本属于一看就懂。接下来我们来看下代码结构。

    33610

    适配AndroidQ拍照和读取相册图片实现方法

    先讲一下咱们这节用到新特性 Android Q文件存储机制修改成了沙盒模式,类似于iOS 应用只能访问自己沙盒下文件和公共媒体文件 如果有想具体了解Android Q新版特效可以去 官方文档 我们在这个地方记录一下...Android Q版本进行拍照保存到相册功能。...拍照 图片正常保存 拍照:Android Q之前版本使用,将图片保存到指定文件夹,拍照完成后需要通知相册刷新 拍照代码 // 拍照存放路径 File fileDir = new File(...,有需要可以直接复制就行 将图片保存到沙盒内 沙盒里面操作文件不再需要申请权限 沙盒中新建文件夹只能再系统指定文件夹中新建 Android Q版本使用,将图片存放到沙盒文件内,图库无法刷新,无法显示...存到公共文件操作,相对来说麻烦点,但是也还好。

    2.7K11

    7.0+系统抓包方案

    声明:本文所讲内容只用于学习相关技术,勿用于其它用途 最近在帮人写一些自动签到脚本,涉及到了7.0+系统中如何对 app 和微信小程序进行抓包问题。这里记录一下有效抓包方案。...反编译 对应用 apk 文件进行反编译,修改其中配置,让用户自己安装证书被信任。由于我不是专业搞,同时这个方案要求第三方开发者没有采取防止反编译措施,所以 pass。...考虑到目标应用无法低版本中运行,所以我模拟器中使用版本是7.0,因为模拟器中操作证书目录非常简单,所以版本高低也不是问题,有没有 root 更不是问题。下面讲一下关键步骤。...前面介绍都是对 app 进行抓包,那么怎么对小程序抓包呢?这里提供三种方法: (1)模拟器 + Fiddler: 基本步骤和前面介绍差不多。...如果要抓包,我们必须下载 7.0 以下微信并导入到模拟器中,或者模拟器中使用 7.0 以下系统,这样就可以无视微信版本。

    3.5K60

    笔记(十)——存储知识

    ——》个人平时笔记,看到同学欢迎指正错误,文中多处摘录于各大博主精华、书籍 1、存储相关详解知识 起初早年是有内置SD卡和可扩展插拔TF卡区分,但是近年手机内置SD卡高内存导致越来越少手机支持...运行时内存RAM,每个app一般分配16M或24M或者通过系统底层设置可以更改自定义。 (2)、存储(ROM) 内部存储(ROM): 就是相当于是PC中硬盘私有存储角色。...storage或mnt文件夹即为外部存储区,外部存储中文件是可以被用户或者其他应用程序修改,有两种类型文件(或者目录): >1.公共文件Public files:文件是可以被自由访问,且文件数据对其他应用或者用户来说都是有意义...内部存储和外部存储并不是按是否存储于SD卡来区分,内部存储是data文件下且不可被访问操作,外部存储是storage或者mnt文件夹下是可以被访问操作,****这些就是区别。...7、7.0使用Uri访问本地文件添加了行为权限,Android 框架执行StrictMode API 政策禁止应用外部公开 file://URI,分享私有文件内容需要通过使用FileProvider

    1.3K31

    第一夜 第一个应用

    承接“Java快速教程”,我将开始写相关文章。 (Android)开发主要使用Java语言。Java语言基础,是开发第一道门槛。再者,一个好应用往往配合有远程服务器。...开发环境  我们开始开发之前,先在命令行中尝试使用命令: javac 如果终端提示找不到命令,那么需要安装JDK(Java Development Kit)。...Linux下,解压缩,eclipse文件夹下,运行可执行文件eclipse,即可启动。你可以将eclipse所在文件夹放入PATH搜索路径中,方便以后使用。...Mac下,用Finder找到eclipse文件夹Eclipse,点击即可运行。你可以将该Eclipse拖到Application中,方便以后使用。...Windows下,下载.exe安装程序并安装。 *** 如果你已经有了Eclipse,并且熟悉Eclipse插件配置,可以只下载Android SDK,并在Eclipse中导入。

    87590

    Python+Appium运行简单demo,你需要理解Appium运行原理!

    二、Appium 面板 高级选项分为 3 大板块:基本配置-Ios 配置-配置。....apk后缀名。 开发把包给你时候都会先打包成一个 apk,然后你去安装,安装后系统上不再是.apk,会对它进行解压。解压后特定系统中特定目录下面会有自己包名。...包名–系统当中标识(相当于唯一代号) 有相同包名,就是应用安装。卸载时候能找到这个包名就能卸载,找不到就不能卸载。 模拟器和真机都是基于 Liunx 内核。...一般手机都有个系统文件夹。很多产商基于原生系统做了很多美化工作,所以很多文件目录会有所改变,每个品牌手机,文件所放目录都不一样。...平台版本号意味着使用自动化框架 API 是不一样,这样发送到终端上面会调用不同。 写代码换到 Ios 也是可以用,只是要准备 Ios 环境,这个需要苹果系统才可以。 .apk是

    2.2K00

    Python+Appium运行简单demo,你需要理解Appium运行原理!

    高级选项分为 3 大板块:基本配置-Ios 配置-配置。 ? 日志文件非常有用,如果你 App 自动化过程中遇到了什么问题报错了,很多时候都要进入 Appium 日志当中来分析。....apk后缀名。 开发把包给你时候都会先打包成一个 apk,然后你去安装,安装后系统上不再是.apk,会对它进行解压。解压后特定系统中特定目录下面会有自己包名。...包名–系统当中标识(相当于唯一代号) 有相同包名,就是应用安装。卸载时候能找到这个包名就能卸载,找不到就不能卸载。 模拟器和真机都是基于 Liunx 内核。...一般手机都有个系统文件夹。很多产商基于原生系统做了很多美化工作,所以很多文件目录会有所改变,每个品牌手机,文件所放目录都不一样。...平台版本号意味着使用自动化框架 API 是不一样,这样发送到终端上面会调用不同。 写代码换到 Ios 也是可以用,只是要准备 Ios 环境,这个需要苹果系统才可以。 .apk是

    2.3K10

    Appium自动化测试框架

    SDK环境安装 百度网盘下载链接,密码: kgwb SDK可以直接从下面的镜像连接进行下载 http://110.40.155.17/download/ 把SDK下这两个目录位置加入PATH环境变量即可...Daemon daemon执行命令 执行结果返回给server端 执行结果发送给client端 abd工具可以电脑通过终端命令来操作手机/模拟器 ---- 连接 连接某台手机或者模拟器...,每间隔设定轮询时间定位指定元素,每次间隔轮询时间内没有定位成功会忽略异常,如果超出设定时间仍未定位成功则抛出异常 可以使用ExpectedConditions中多种方法来满足不同定位需求...,下面开始讲解,如何完成对Hybrid APP(混合型—>Native+H5)进行自动化测试 手机端页面分为两类,一类使用原生开发,另一类使用原生加h5页面混合而成,对于原生页面的自动化测试...,就如上面所讲,而要把上面对原生页面的自动化测试放到webView–>web页面上来时候,则无法生效,需要进行特殊处理。

    2K30

    群晖NAS安装Video Station结合内网穿透实现远程访问本地存储影音文件

    实现公网环境下(连接其他局域网/流量)使用电脑(mac或win系统)以及移动端(ios,,ipad等)都可以访问存储本地视频文件。...另外,公网环境下也可以将本地视频文件上传至家中存储设备(黑群晖直接上传至电脑硬盘,白群辉直接上传至nas本地硬盘) 1.使用环境要求: 首先,本教程基于群晖生态,所以需要安装配置群晖虚拟机或拥有正版群晖...3.公网访问本地群晖video station: 想要公网访问(在户外用手机等移动设备使用流量或公共WiFi访问),需要把本地端口通过内网穿透软件映射至公网,我建议使用能白嫖不限流量cpolar。...: 登陆成功: 点击即可播放本地电影: 5.公网条件下使用移动端(,ios等系统)访问本地群晖video station 首先,打开应用商店,搜索DS video,下载群晖官方移动端app: 打开后...,输入公网地址,以及群晖账号密码: 公网条件下 登陆: 成功访问: 经过以上配置,我们能够公网条件下实现使用电脑浏览器/移动端软件访问家中群晖观看电影啦!

    17910
    领券