首页
关于 About
网站安全性 Security
Search
1
Chrome/Chromium 在 Linux 平台的视频硬解方案
1,544 阅读
2
将 USB 设备连接到 WSL2
302 阅读
3
关闭 Intel VMD 解决 INACCESSIBLE_BOOT_DEVICE 蓝屏
272 阅读
4
Android 14 平台程序开发中文件共享权限问题
200 阅读
5
为河北邯郸被害少年发声
199 阅读
数字安全
教程
公告
默认
高通设备开发
登录
Search
标签搜索
Linux
Windows
Qualcomm
QCS8250
SM8250
高通
Chromium
Chrome
AppArmor
PKI
Android
OpenWrt
NVIDIA
CertificateTransparency
X509
Python
pip
Docker
Electron
WSL
日暮清林
累计撰写
22
篇文章
累计收到
11
条评论
首页
栏目
数字安全
教程
公告
默认
高通设备开发
页面
关于 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日
200 阅读
0 评论
0 点赞