首页
关于 About
网站安全性 Security
Search
1
Chrome/Chromium 在 Linux 平台的视频硬解方案
1,000 阅读
2
将 USB 设备连接到 WSL2
224 阅读
3
为河北邯郸被害少年发声
177 阅读
4
证书透明度日志服务器部署指南(Docker)
145 阅读
5
Android 14 平台程序开发中文件共享权限问题
126 阅读
数字安全
教程
公告
默认
登录
Search
标签搜索
Windows
Linux
Chromium
Chrome
AppArmor
PKI
Android
OpenWrt
NVIDIA
CertificateTransparency
X509
Python
pip
Docker
Electron
WSL
golang
depot_tools
gclient
tmux
日暮清林 Levi Marvin
累计撰写
15
篇文章
累计收到
10
条评论
首页
栏目
数字安全
教程
公告
默认
页面
关于 About
网站安全性 Security
搜索到
1
篇与
的结果
2024-02-01
Android 14 平台程序开发中文件共享权限问题
前言最近在写 Android 应用项目,在 App 内部存储(/data/data/<package_name>/)的 context files 里存了一个文件。想要调用系统程序打开。结果报错 FileUriExposedException。原因自从 Android 7 开始,应用间的文件共享必须使用 content:// scheme 的 Uri 来访问,而通常从 File 对象获取到的 Uri 均为 file:// 的 scheme。而 Google 禁止应用程序间使用 file:// 的 Uri 来共享文件。解决方案试过直接禁用严格模式(StrictMode) 但是没有用。因此需要在清单文件 AndroidManifest.xml 中注册程序的 FileProvider,随后使用 FileProvider 获取文件的 content:// Uri。代码自行替换下面代码部分内容中的包名 com.example.application1 为你程序的包名,请勿无脑复制粘贴。注册 FileProvider<application> ... <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.application1.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> </provider> ... </application>在 res/xml/ 下新建 xml 文件 provider_paths.xml,在其中指定程序可访问的路径。<?xml version="1.0" encoding="utf-8"?> <paths> <files-path name="files_root" path="."/> </paths>在程序调用代码: val fileUri: Uri = FileProvider.getUriForFile( this, "com.example.application1.provider", File(filesDir, RESULT_FILE_NAME) ) val intent = Intent(Intent.ACTION_VIEW).apply { data = fileUri addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } startActivity(intent)
2024年02月01日
126 阅读
0 评论
0 点赞