2014-05-13 2 views
0

내 앱 내부 웹보기에서로드 할 때 특정 사이트에 문제가 있습니다.내부 WebView 문제의 Android로드 URL

LogCat에서 나는이 두 줄을 얻습니다 (태그는 "크롬"입니다).

[INFO:CONSOLE(25)] "Uncaught TypeError: Cannot call method 'getItem' of null", source: http://m.ynet.co.il/Default_Ynet.aspx?type=3&id=4519238 (25) 
[INFO:CONSOLE(73)] "Uncaught TypeError: Cannot call method 'push' of undefined", source: http://m.ynet.co.il/Default_Ynet.aspx?type=3&id=4519238 (73) 

외부 브라우저로 리디렉션하면 정상입니다. 또한 위 사이트에서만 발생합니다 (logcat 참조)

public class WebActivity extends Activity { 
WebView wv; 
final Activity activity = this; 
@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    setProgressBarIndeterminateVisibility(true); 
    setContentView(R.layout.activity_web); 
    wv = (WebView)findViewById(R.id.webView1); 
    Intent intent = getIntent(); 
    final String url = intent.getStringExtra("url"); 
    Log.i("webView", url); 
    wv.getSettings().setJavaScriptEnabled(true); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setLoadWithOverviewMode(true); 
    wv.getSettings().setUseWideViewPort(true); 
    wv.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) 
     { 
      activity.setTitle("Loading..."); 
      activity.setProgress(progress * 100); 

      if(progress == 100) 
       activity.setTitle(R.string.app_name); 
     } 
    }); 
    wv.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) 
     { 
      view.loadUrl(url); 
      return true; 
     } 
    }); 

    wv.loadUrl(url); 
} 

아이디어가 있으십니까?

+0

아마 무관하지만 shouldOverrideUrlLoading에서 loadUrl를 호출하지 않는 대신 false를 돌려줍니다. –

+0

@ marcin.kosiba 학습 할 수있는 이유를 설명해주세요. – GuyZ

+0

'shouldOverrideUrlLoading'은 https가 아닌 스키마가있는 서브 프레임에 대해 호출됩니다. http://jsbin.com/gupug/1/quiet와 같은 페이지로 이동하면 코드가 view.loadUrl ('tel : 1234') 호출을 끝내고 webview가 오류 페이지를 표시하게됩니다. tel : URL을로드하는 방법을 알지 못합니다. –

답변

0

이 특정 사이트에서 shouldOverrideUrlLoading 메서드 (아래)를 사용하는 데 문제가 있음이 드러났습니다. 이 모두가 좋았다 삭제되면

@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     view.loadUrl(url); 
     return true; 
    } 

...