【发布时间】:2017-07-07 20:45:24
【问题描述】:
如果针对 API 24 或更高版本,如何使用 HTML 链接导航到 WebView 中的本地文件(HTML 页面)?
这在之前已经讨论过,解决方案使用file:// URI 方案。
到目前为止有效的是使用
<a href="file:///android_asset/my_page.html">Go to local page</a>
在以WebView 显示的HTML 文件中,单击链接将加载本地页面app/src/main/assets/my_page.html。
但是,从 API 24 开始,单击此类链接时会引发 FileUriExposedException。来自 logcat:
mypackage.myapp W/System.err: android.os.FileUriExposedException: file:///android_asset/my_page.html exposed beyond app through Intent.getData()
...
mypackage.myapp W/System.err: at org.chromium.android_webview.ResourcesContextWrapperFactory$WebViewContextWrapper.startActivity(ResourcesContextWrapperFactory.java:121)
mypackage.myapp W/System.err: at org.chromium.android_webview.AwContentsClient.sendBrowsingIntent(AwContentsClient.java:203)
根据文档,当“一个应用程序将file:// Uri 暴露给另一个应用程序”时会抛出此问题。我想知道为什么会这样,因为根据日志,一切似乎都发生在 mypackage.myapp 内部。
文档建议改用 content:// URI 方案,但这不适用于 HTML 文件。
【问题讨论】: