1

我有一个安卓网络视图。我正在加载一个远程页面,例如: google.com 使用标准WebView.loadUrl(url)

页面加载后onPageFinished(),我会像下面这样注入 javascript...

WebView.loadUrl("javascript:(function() { " +
"document.getElementById('elementid').style.backgroundImage='file:///android_asset/newbackgroundimage.png';" +
"})()");

Javascript 注入工作正常,但问题是它不会从本地资产文件夹加载背景图像。如果我提供远程图像 URL,它可以正常工作,但我在本地有一个图像,需要在注入中使用它。

有人可以帮忙吗?

谢谢!

4

3 回答 3

0

一种解决方法是将图像作为 base64 编码到一个变量中,避免与本地文件系统混淆。 https://en.wikipedia.org/wiki/Data_URI_scheme

于 2013-07-07T00:47:35.043 回答
0

您是否为 WebView 设置了设置?

WebSettings webviewsettings = WebView.getSettings();
    webviewsettings.setJavaScriptEnabled(true);
    webviewsettings.setJavaScriptCanOpenWindowsAutomatically(true);

如果访问 png 有问题,您可以尝试:

try 
{
    InputStream ims = getAssets().open("newbackgroundimage.png");
    Drawable d = Drawable.createFromStream(ims, null);
    mImage.setImageDrawable(d);
}
catch(IOException ex) 
{
    return;
}

快乐指挥

于 2013-05-16T08:45:27.747 回答
0

我知道这是一篇旧文章,我正在做类似的事情并浏览了这篇文章 Android: How to reference assets images from a remote loaded html page in webview

您可以将 loadDataWithBaseURL() 用于本地资产图像。

于 2016-03-11T10:41:50.320 回答