Android WebView导航错误消息

Android WebView导航错误消息,android,webview,Android,Webview,不清楚如何实现导航/互联网连接错误 我试过这里的代码 但它不起作用 import android.app.Activity; import android.net.ConnectivityManager; import android.os.Build; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Gravity; import android.vie

不清楚如何实现导航/互联网连接错误

我试过这里的代码

但它不起作用

import android.app.Activity;
import android.net.ConnectivityManager;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private WebView view;
    private ImageView splashScreen;
    private ImageView logo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.activity_main);

        splashScreen =   (ImageView) this.findViewById(R.id.spscreen);

        logo =  (ImageView) this.findViewById(R.id.logo);

        String url = "some URL";
        view = (WebView)this.findViewById(R.id.webView1);

        view.setWebViewClient(new WebViewClient() {

            public void onPageFinished(WebView view, String url) {
                // do your stuff here
                logo.setVisibility(View.INVISIBLE);
                splashScreen.setVisibility(View.INVISIBLE);
                view.setVisibility(View.VISIBLE);
            }
        });


        WebSettings s = view.getSettings();
        s.setJavaScriptEnabled(true);

        s.setCacheMode(WebSettings.LOAD_DEFAULT);
        s.setDomStorageEnabled(true);


        view.loadUrl(url);
    }
}

嗯,在这方面你有两个选择

要么让loadUrl()启动,然后使用onReceivedError()处理错误

试图处理所有连接错误

或者使用中的isOnline()方法包装loadUrl()调用 需要权限android.permission.ACCESS\u网络\u状态


如果第一个选项是您需要的,它可能会更好,因为在没有实际internet连接的情况下连接到Wifi会给您带来错误的结果。

我在您的代码中没有看到对
onReceivedError()
的覆盖,还要注意,上面答案中的方法已被弃用,还有另一种味道。还有
onreceivedHttPeror()
也可能是你想要的need@Yazan您介意提出一些解决方案吗?是的,我已经建议使用非擦洗风格的
onReceivedError()
,因为您的代码不清楚您是使用了它还是使用了弃用的。另外还有另一种方法
onReceivedHttPeror()
尝试或克服它。--这就是我所能帮助的with@Yazan嗯…如果没有互联网,我只需要显示消息,就这样。你能推荐一些代码来做这件事吗?啊,我当然知道你知道,你只需要实现这个方法并在
onCreate()
或调用
view.loadUrl(url)之前使用它
ex,
if(!isOnline()){toast(未连接)…}else{view.loadUrl(url);}
view.setWebViewClient(new WebViewClient() {
    @override
    public void onPageFinished(WebView view, String url) {
        // do your stuff here
        logo.setVisibility(View.INVISIBLE);
        splashScreen.setVisibility(View.INVISIBLE);
        view.setVisibility(View.VISIBLE);
    }

    @override
    void onReceivedError (WebView view, 
        WebResourceRequest request, 
        WebResourceError error){
            if(error.getErrorCode () == WebViewClient.ERROR_CONNECT || error.getErrorCode () == WebViewClient.ERROR_HOST_LOOKUP || WebViewClient.ERROR_TIMEOUT){
                Toast.makeText(context, "you are not connected!", Toast.LENGTH_LONG);
                //do other stuff, hide views ...
            }
        }
});
if(!isOnline()){
    Toast.makeText(context, "you are not connected!", Toast.LENGTH_LONG);
}else{
    view.loadUrl(url);
}