使用Android WebView使用本地资源(图像,javascript)加载外部HTML?

时间:2011-08-26 20:05:37

标签: android webview android-webview

我想在Android上创建一个简单的基于Web的应用程序,从“assets”目录加载某些大型文件,如本地的Javascript和用户界面元素。但是,在加载外部HTML时,我无法使用本地资产目录。所以外部服务器会给出这样的东西:

<script type="text/javascript" src="file:///android_asset/javascript.js"/>

即使网站本身来自外部网站,WebView也会使用它。我知道存在安全风险,但有没有办法通过仅允许应用程序端的特定URL来实现这一点?

我有什么方法可以做到吗?

1 个答案:

答案 0 :(得分:-2)

首先,您必须在某处复制所有资产(例如,外部存储)。

然后,要过滤网址,您应该覆盖方法

public boolean shouldOverrideUrlLoading(WebView view, String url);

在WebViewClient类中。

加入: 当您的应用程序启动时,将资产放入/ sdcard / somefolder /请参阅getExternalFilesDir()

在shouldOverrideUrlLoading中将url覆盖为类似

的内容
file:///sdcard/somefolder/<your filename here>

它应该像

一样简单
public boolean shouldOverrideUrlLoading(WebView view, String url) {
   url = "file://" + context.getExternalFilesDir().getAbsolutePath() + "/" + url;
   super.shouldOverrideUrlLoading(view, url);
}