首页
学习
活动
专区
工具
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,文件内容如下: 安卓7.0拍照,相册选择崩溃的问题(包括压缩图片在内) ---- 五、关于Android7.0相机闪退以及相册获取不到图片问题 1、没有动态申请权限,按照上述思路去做就好了。...此权限与其他运行时权限一样,会与应用绑定,在安装时进行提示,确保用户授予使用安装来源的权限后,此权限才会提示用户安装应用。

2.4K10
  • 2018年的安卓开发环境搭建

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

    【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内

    95410

    手把手教你搭建基于 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 以内。

    75420

    笔记(十)——安卓存储知识

    ——》个人平时笔记,看到的同学欢迎指正错误,文中多处摘录于各大博主精华、书籍 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

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

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

    41210

    远程控制手机方法只要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.5K10

    安卓7.0+系统抓包方案

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

    3.6K60

    安卓第一夜 第一个应用

    承接“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中导入。

    93390

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

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

    2.3K10

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

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

    2.3K00

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

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

    23410

    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页面上来的时候,则无法生效,需要进行特殊处理。

    2.1K30

    B4A 配置第三方夜神安卓模拟器以调试应用

    老规矩先看效果图 模拟器或仿真设备是一个在PC上模拟真实设备的程序,在测试你的项目时它总是比使用真实设备要好一些.毕竟你可以随便改变分辨率以调整你的程序去适应不同的分辨率,使程序设计达到最佳效果....大家用过安卓自带的模拟器,它非常慢.今天就安利一款比较顺畅的安卓模拟器,并配上环境搭建教程....一、在官网下载“夜神模拟器” 网址:https://www.yeshen.com/ 二、安装“夜神模拟器” ,并配置为手机版(安装就不细说了) 三、正式开始配置环境 3.1 找到"夜神模拟器..."安装目录下的bin文件夹(根据实际安装路径)下的nox_adb.exe文件,本人的是 F:\Program Files\Nox\bin\nox_adb.exe 3.2 然后先复制到桌面并把...的文件)复制并替换第三步android-sdk目录下platform-tools文件夹下的adb.exe文件 3.5 打开"夜神模拟器",像在操作真机一样把"开发者选项"中的"USB调试"打开. 3.6

    1.6K20
    领券