我需要使用从远程主机下载的 apk 文件打开意图。在低于 24 的 API 上,一切正常,而且似乎还可以。现在我必须以 API 29 为目标,这给我带来了一些问题。
当我尝试在装有 Android 10 的设备上打开 apk 文件时,我从日志中得到的一切都是:
Caught Exception: file:///storage/emulated/0/Download/blablabla.apk exposed beyond app through Intent.getData()
我尝试按照此处https://stackoverflow.com/a/38858040/717599 或此处 https://infinum.com/the-capsized-eight/share-files-using-fileprovider的建议 添加FileProvider
但我无法使用或导入FileProvider,因为未定义此类。我尝试过了
import android.support.v4.content.FileProvider
但在任何地方都找不到包。然后我修改了我的 AndroidManifest.xml 以包含
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
但这并不能神奇地解决问题。
我什至尝试禁用运行时检查,如下所述: https ://stackoverflow.com/a/42437379/717599
但仍然没有成功:
Caught Exception: No Activity found to handle Intent { act=android.intent.action.VIEW
dat=file:///storage/emulated/0/Download/blablabla.apk typ=application/vnd.android.package-archive flg=0x10000001 }
除了将所有内容降级到 API 24 以下之外,我不知道下一步该做什么或尝试做什么,这是我做不到的。有人可以指出我应该做什么或在哪里可以找到任何工作示例吗?如果需要任何其他信息,甚至(不)工作演示,我将很乐意提供。
我正在使用从 QtCreator 运行的 gradle 构建系统。