直接简单粗暴上解决办法了,网上虽然有一大堆,但是基本上没提到某些细节。

第一步

res/xml/file_paths.xml(没有?当然没有啦,自己创建一个!)

然后,直接将下面的代码粘贴上去好吧,直接粘!!!

<?xml version="1.0" encoding="utf-8"?>
<paths><external-pathpath="Android/data/${applicationId}/"name="files_root" /><external-pathpath="."name="external_storage_root" />
</paths>

上面的能满足基本的外置存储读写操作了,如果要细分的话,自己百度,关键字:“Android FileProvider”

第二步

打开 AndroidManifest.xml 清单文件。

<application...android:requestLegacyExternalStorage="true"><providerandroid:name="androidx.core.content.FileProvider"android:authorities="${applicationId}.provider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths" /></provider>
</application>

先给我记住 android:authorities="${applicationId}.provider" 这一行的.provider

第三步

配置完成之后,我们在对应的代码中请求文件格式如下:

Uri uri= FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName() + ".provider", apkfile.result);intent.setDataAndType(uri, "MIME type 自己写了");

为什么上面第二步要让你记住.provider

这里就用上了getApplicationContext().getPackageName() + ".provider"

为什么专门再抄一遍这个东西?就是某些Blog直接上来就复制,粘贴,然后报错闪退,然后就又继续百度。

问题复现

举个栗子:

某些人第二步写的是:android:authorities="${applicationId}.provider

然后到了第三步写一个:getApplicationContext().getPackageName() + ".fileProvider"

不匹配的呀,哥哥。

【Android FileProvider】Couldn‘t find meta-data for provider with authority com.xxx.xxx.provider相关推荐

  1. 【Android 文件管理】分区存储 ( 修改与删除图片文件 )

    文章目录 一.分区存储模式下使用 MediaStore 修改图片 二.分区存储模式下使用 MediaStore 删除图片 三.相关文档资料 Android 分区存储系列博客 : [Android 文件 ...

  2. 【Android 文件管理】分区存储 ( 创建与查询图片文件 )

    文章目录 一.分区存储模式下使用 MediaStore 插入图片 二.分区存储模式下使用 MediaStore 查询图片 三.相关文档资料 Android 分区存储系列博客 : [Android 文件 ...

  3. 【Android 文件管理】分区存储 ( MediaStore 文件操作 )

    文章目录 一.动态权限申请 二.MediaStore 操作文件 三.完整代码示例 1.MainActivity 核心代码 2.build.gradle 构建脚本 3.清单文件 五.相关文档资料 特别注 ...

  4. 【android系统】android系统升级流程分析(二)---update升级包分析

    接下来我们将通过几篇文章来分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.今天让我先来分析下升级包update.zip. 一 ...

  5. 【Android基础】动画

    Android里的动画分为两类,以3.0版本为分水岭. 3.0前已存在 帧动画 补间动画 3.0出现 属性动画 帧动画 顾名思义,快速切换几张图片来达到动画的效果. 建立帧动画xml Note:不要把 ...

  6. 【Android UI】图片 + 文字展示by SpannableStringBuilder

    起源 图片和文字混合展示,比如这么个需求,需要在每段文字的左边要有一个小圆点,(小圆点符号在android系统中并不支持). 先用TextView的setDrawableLeft, 嗯,达到要求,那么 ...

  7. 【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 )

    文章目录 一.下载 Java-WebSocket 源码 二.Android Studio 工程导入 Java-WebSocket 源码 使用 https://github.com/TooTallNat ...

  8. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | Class.cpp#findClassNoInit 函数 | DexFile.cpp#dexFindClass 函数分析 )

    文章目录 前言 一.Class.cpp#dvmDefineClass 函数分析 二.Class.cpp#findClassNoInit 函数分析 三.DexFile.cpp#dexFindClass ...

  9. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | native 函数查询 | dalvik_system_DexFile.cpp#defineClassNative 函数 )

    文章目录 前言 一.查询 defineClassNative 函数 二.dalvik_system_DexFile.cpp#Dalvik_dalvik_system_DexFile_defineCla ...

最新文章

  1. 解析BW:数据源提取数据的原理
  2. linux 定时任务 (php)
  3. 从petshop中一实例谈using 的三种用法
  4. python颜色表_Python:数据可视化,必须注意的30个小技巧
  5. Android Application的使用及其生命周期
  6. 用DrawerLayout(Support Library 4提供)开发侧边栏,有没有什么方法关闭手势控制?...
  7. c++ opencv4.5.0 头文件_简单的C程序分析(first.c程序)
  8. 因特尔g41显卡 linux驱动,英特尔g41显卡驱动
  9. 移动设备如何当作FL Studio中的MIDI控制器(下)
  10. matlab程序改写python3
  11. 手术麻醉管理系统方案/案列/小程序/网站
  12. 毕业论文 一级标题段前段后问题
  13. 重启网络显示:Device eth0 does not seem to be present,delaying initialization.
  14. 一半嫁妆钱,换了90000张照片,一个老爹的摄影计划
  15. 将人工智能(AI)应用于软件测试中
  16. Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
  17. 网络攻击与防范—术语和工具介绍
  18. a洋发卡网sadnt模板美化
  19. 逍遥书生服务器啥时候维护完毕,2020年8月18日定期维护解读
  20. 实时在线游戏服务器客户端交互总结

热门文章

  1. 写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
  2. 上期技术综合交易平台[CTP]
  3. 红黑树(Red Black Tree)超详细解析
  4. 【CUDA】CUDA9.0 win10配置
  5. JS给table动态添加行和列
  6. PDF文件中的图片提取
  7. 鼠标移入移出事件,防止抖动
  8. 表示“各类人”的英语词缀(zt)
  9. C++面向对象程序设计 024:这是什么鬼delete ---- (北大Mooc)
  10. java 字符数组对象_java-将对象数组转换为字符串数组