2017-02-14 73 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); 
}