我想在Android上创建一个简单的基于Web的应用程序,从“assets”目录加载某些大型文件,如本地的Javascript和用户界面元素。但是,在加载外部HTML时,我无法使用本地资产目录。所以外部服务器会给出这样的东西:
<script type="text/javascript" src="file:///android_asset/javascript.js"/>
即使网站本身来自外部网站,WebView也会使用它。我知道存在安全风险,但有没有办法通过仅允许应用程序端的特定URL来实现这一点?
我有什么方法可以做到吗?
答案 0 :(得分:-2)
首先,您必须在某处复制所有资产(例如,外部存储)。
然后,要过滤网址,您应该覆盖方法
public boolean shouldOverrideUrlLoading(WebView view, String url);
在WebViewClient类中。
加入: 当您的应用程序启动时,将资产放入/ sdcard / somefolder /请参阅getExternalFilesDir()
file:///sdcard/somefolder/<your filename here>
它应该像
一样简单public boolean shouldOverrideUrlLoading(WebView view, String url) {
url = "file://" + context.getExternalFilesDir().getAbsolutePath() + "/" + url;
super.shouldOverrideUrlLoading(view, url);
}