android - 如何将 Toast say "no internet connection "添加到 webview?

标签 android

我想将 Toast say "no internet connection"添加到此 webview 代码,我尝试了不止一次但失败了,我通过 MainActivity 中的按钮打开此 webview,我希望编写一个干净完整的 webview 代码但我有在 android plez 帮助中的一些经验,代码

public class ShowWeb extends AppCompatActivity {

ProgressDialog progressDialog;
WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_web);

    String Url = getIntent().getStringExtra("url");

    WebView web = (WebView)findViewById(R.id.webview);
    web.loadUrl(Url);


    //Get webview
    WebView webView = (WebView) findViewById(R.id.webview);
    //startWebView("http://50.73.3.244/Mobile/");

    // Javascript inabled on webview
    webView.getSettings().setJavaScriptEnabled(true);

    // Other webview options التكبير والتصغير
    webView.getSettings().setLoadWithOverviewMode(true);

    //webView.getSettings().setUseWideViewPort(true);

    //Other webview settings
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setSupportZoom(true);
}

//Show loader on url load
public void onLoadResource (WebView view, String url) {

    // if url contains string androidexample
    // Then show progress  Dialog
    if (progressDialog == null && url.contains("lol")
            ) {

        // in standard case YourActivity.this
        progressDialog = new ProgressDialog(ShowWeb.this);
        progressDialog.setMessage("Loading...");
        progressDialog.show();
    }
}

最佳答案

我看到有两种方法可以解决这个问题。

方式一:

首先检查互联网连接。如果可用,则加载 url,否则显示带有消息“无互联网可用”的 Toast。

WebView web = (WebView)findViewById(R.id.webview);
if(isNetworkStatusAvialable (getApplicationContext())) {
    web.loadUrl(Url);
} else {
    Toast.makeText(this, "No Internet Connection", Toast.LENGTH_SHORT).show();
}

...

public static boolean isNetworkStatusAvialable (Context context) {
    ConnectivityManager cm =
        (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();

}

方式二: 使用 WebViewClient 的 onReceivedError 回调从 Assets 加载默认页面。

mWebView.setWebViewClient(new WebViewClient() {
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        mWebView.loadUrl("file:///android_asset/myerrorpage.html");

    }
});

关于android - 如何将 Toast say "no internet connection "添加到 webview?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718985/

相关文章:

android - 是否可以使用Soundpool或媒体同时播放声音(如Midi或Wave)?

android - SAXParser 有时会返回一个错误的值

android - 如何让ImageView根据固定高度匹配宽度?

android - 自定义 View : Redraw view canvas on Press

java - 使用 ListView 布置复选框和文本列表

android - 警报对话已保护访问权限

android - 用于 C/C++ 的路径线绘图图形库/引擎?

java - 安卓 : Google API inside a custom adapter

android - AWS cognito 与 AppAuth 集成

java - Android:从另一个打开 fragment