Android 7.0迁移 - 访问android_asset文件夹时处理FileUriExposedException

时间:2017-12-27 23:37:45

标签: android android-webview assets android-7.0-nougat android-fileprovider

背景

迁移到Android 7.0后,我注意到在我的webView中加载以下网址时,我的应用程序崩溃了FileUriExposedException

webView.loadUrl("file:///android_asset/myFolder/myFile.html")

我读到here这是因为Android 7.0中引入了一些文件系统权限更改,其中在尝试共享文件时会抛出FileUriExposedException:// Uri in Intent。

我尝试实现建议的工作,即使用FileProvider来获取临时访问权限(here),但我不知道如何使这项工作适用于{{1因为我只看到android_asset的可用路径涉及内部和外部存储路径。

代码

来自MainActivity - >

FileProvider

来自HelpActivity - >

  Intent intent = new Intent(view.getContext(), HelpActivity.class);
  startActivity(intent);

问题

当需要从webView中的assets文件夹加载文件时,是否有人知道解决此异常的好方法?

 webView.loadUrl("file:///android_asset/help/index.html");

1 个答案:

答案 0 :(得分:2)

您的网络内容似乎包含触发WebView通过某种相对路径加载help.html的内容。 WebView的默认行为是要求默认Web浏览器加载该页面。这不适用于file:///android_asset/ Uri值。

因此,请查看HTML,找出尝试重定向到help.html的内容并进行修复。另外,请考虑在WebViewClient添加WebView,您可以通过shouldOverrideUrlLoading()控制此类页面加载行为。