Android WebView на отсутствие ошибки подключения
Я пытаюсь показать пользовательскую ошибку отсутствия соединения, но ниже не работает код и в файле manifest.xml указано состояние сети. Connection() проверяет состояние сети в классе. Надеюсь, это поможет в решении проблемы.
package com.testing.webview;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends Activity {
public static final int DIALOG_NONETWORK = 0;
WebView mWebView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(!Connection()){
Context context = getApplicationContext();
CharSequence text = "Sorry you need an Internet connection! Please try again when the network is available.";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
finish();
}
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/index.html");
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.setBackgroundColor(Color.TRANSPARENT);
}
public boolean Connection() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()){
return true;
}
else{
return false;
}
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
1 ответ
Почему вы заканчиваете занятие после отсутствия связи?
Есть тост, как:
Toast.makeText(getApplicationContext(),"Network is down",
Toast.LENGTH_SHORT).show();
А затем заставьте представление показать какую-то кнопку, чтобы "повторить" сетевой запрос, это то, что я бы сделал в любом случае. Тост в настоящее время не отображается, вероятно, потому что действие закрывается сразу после тоста, поэтому не хватает времени, чтобы показать его