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);
}