2017-02-14 164 views
0

我已经加载了一个网页到一个android webview,它从url加载图像到一个网页通过JavaScript,它给出了一个错误的网页不加载任何人都可以帮助吗?网络视图不加载网络图像

[INFO:CONSOLE(0)] "Image from origin 'https://s-media-cache-ak0.pinimg.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.", source: file:///android_asset/demo3.html (0)

我的Java代码:

WebView wv = (WebView) vw.findViewById(R.id.help_webview); 
    WebSettings webSettings = wv.getSettings(); 
    webSettings.setJavaScriptEnabled(true);webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); 
    wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    wv.loadUrl("file:///android_asset/demo3.html"); 

而XML仅仅是简单的网页视图

<WebView 
    android:id="@+id/help_webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
</WebView> 
+3

显示您的努力。分享你的代码到目前为止你所做的。 –

+0

嗨安迪感谢您的回复。之前未发布代码的原因是其非常简单的web视图。但是我已经按照你的要求添加了代码。任何暗示? – developer33

回答

0

一般来说,在一个网站上运行JavaScript代码不能从其他网站获取资源。但是来自网站的JavaScript应该能够访问来自同一网站的资源。这被称为same-origin policy,并且由所有主流浏览器实现。

同样的事情也适用于Android原生的WebView same-origin-policy-and-android-webview

你可以试试下面的方法,如果你的文件是在本地

WebView wv = (WebView) vw.findViewById(R.id.help_webview); 
WebSettings webSettings = wv.getSettings(); 
webSettings.setAllowFileAccess(true). 
webSettings.setAllowFileAccessFromFileURLs(true) 
webSettings.setAllowUniversalAccessFromFileURLs(true). 

这些方法存在于API 16和更高版本,并默认为false ,但确保默认值可能是一个好主意。

+0

我已经尝试过这些行,但他们没有解决问题。无论如何感谢您的答复Punit – developer33

0

请看看这个,

wv.setWebViewClient(新WebViewClient());

0

我也遇到过同样的错误。 JavaScript会尝试加载图像,我会得到上面的错误。将Webview设置的设置更改为下面的代码后,它开始工作:

private void setupSettings() { 
    WebSettings settings = memoryGameView.getSettings(); // memoryGameView is an instance of android.webkit.WebView 
    settings.setLoadWithOverviewMode(true); 
    settings.setUseWideViewPort(true); 
    settings.setJavaScriptEnabled(true); 
    settings.setAllowFileAccess(true); 
    settings.setAllowContentAccess(true); 
    settings.setAllowFileAccessFromFileURLs(true); 
    settings.setAllowUniversalAccessFromFileURLs(true); 
}