WebView는 웹 페이지에서 반환된 오류 코드 정보를 처리합니다.


이 섹션 소개:

안녕하세요. 회사에서 HTML5 모바일 앱을 만들고 있다면 웹페이지를 방문하면 WebView를 통해 웹페이지가 표시됩니다. WebView 기본 오류가 직접 팝업되는 경우 존재하지 않거나 다른 오류가 발생하여 404, 401, 403, 30X 및 기타 오류 상태 코드를 보고합니다. 프롬프트 페이지는 그다지 친숙하지 않을 수 있습니다. WebViewClient의 onReceivedError() 메서드를 재정의하여 원하는 결과를 얻을 수 있습니다. 원하는 효과를 얻는 일반적인 방법에는 두 가지가 있습니다. 그 중 하나는 자산 디렉터리에 오류 메시지를 직접 만드는 것입니다. HTML 페이지에서는 오류가 발생하면, 즉 onReceivedError()가 호출되면 webView의 loadUrl을 호출하여 우리에게 점프합니다. 다음과 같은 오류 페이지: wView.loadUrl("file:///android_asset/error.html"); 또는 다른 페이지를 작성할 수도 있습니다. 레이아웃이나 큰 그림은 보통 보이지 않게 설정되어 있습니다. 페이지 오류가 발생하면 레이아웃이나 그림을 보이게 해주세요! 아래에 간단한 예시를 작성해보겠습니다!


1. 페이지 오류, 사용자 정의 웹 페이지 로드:

실행 효과 다이어그램:

1.gif

키 코드:

wView.setWebViewClient(new WebViewClient() {
//设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

@Override
public void onReceivedError(WebView view, int errorCode, String description,
    String failingUrl) {
        super.onReceivedError(view, errorCode, description, failingUrl);
        wView.loadUrl("file:///android_asset/error.html");
    }
});

2 페이지 오류, 해당 보기 표시

실행 중입니다. 효과 그림 :

2.gif

구현 코드:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private WebView wView;
    private ImageView img_error_back;
    private Button btn_refresh;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        wView = (WebView) findViewById(R.id.wView);
        img_error_back = (ImageView) findViewById(R.id.img_error_back);
        btn_refresh = (Button) findViewById(R.id.btn_refresh);
        wView.loadUrl("http://www.baidu.com");
        wView.setWebViewClient(new WebViewClient() {
            //设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                super.onReceivedError(view, errorCode, description, failingUrl);
                wView.setVisibility(View.GONE);
                img_error_back.setVisibility(View.VISIBLE);
            }
        });
        btn_refresh.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        wView.loadUrl("http://www.baidu.com");
        img_error_back.setVisibility(View.GONE);
        wView.setVisibility(View.VISIBLE);
    }
}

3. 샘플 코드 다운로드:

WebViewDemo8.zip: WebViewDemo8.zip


다운로드 이 섹션 요약:

흠, 매우 간단한 섹션 하나, 하하, 아주 간단하죠. 게다가 오류 코드에 따라 오류 코드를 다르게 설정할 수도 있습니다. 페이지~ 여기서 확장해 보겠습니다. WebView에 대한 기본 학습은 여기서 끝납니다. 다음 섹션에서는 네트워크 프로그래밍을 시작하겠습니다. 어려운 점 중 하나는 소켓 네트워크 프로그래밍입니다. 물론, 이전에 배운 적이 있다면 배우지 않아도 상관없습니다. 소켓~꼭 지켜봐주세요~이모티콘 안올리는게 익숙하지 않네요 ㅎㅎ~3.gif감사합니다~