【问题标题】:Android WebView and internet connection/Wifi error messageAndroid WebView 和互联网连接/Wifi 错误消息
【发布时间】:2014-07-21 18:05:37
【问题描述】:

希望有人可以在这里帮助我,因为我真的被困住了。我有一些使用 WebView 的 Android 应用程序的代码。我正在尝试研究如何添加一些代码来检查是否有连接到互联网或 wifi。现在我已经搜索了溢出并尝试了许多不同的代码,但没有任何东西对我有用。我不是 Android 开发者,只是想为自己和家人做点什么。 我想在应用程序 (error.html) 中显示一个 html 页面,当没有连接时,该页面会显示我的自定义错误消息。

任何帮助都会很棒。

package com.lotto.lra;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class LottoResultsActivity extends Activity {
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.mydomain.com")) {
// This is my web site, so do not override; let my WebView load the page
return false;
}

// Otherwise, the link is not for a page on my site, so launch another Activity that     handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
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);
}

private WebView mWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedstanceState);
setContentView(R.layout.main);

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.mydomain.com/LRA/");
mWebView.setWebViewClient(new HelloWebViewClient());
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
}       
}

【问题讨论】:

    标签: android webview wifi


    【解决方案1】:

    要检查互联网连接,请使用此方法

     public boolean isConnectingToInternet(Context mContext) {
                ConnectivityManager connectivity = (ConnectivityManager)mContext
                        .getSystemService(Context.CONNECTIVITY_SERVICE);
                if (connectivity != null) {
                    NetworkInfo[] info = connectivity.getAllNetworkInfo();
                    if (info != null)
                        for (int i = 0; i < info.length; i++)
                            if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                                return true;
                            }
    
                }
                return false;
            }
    

    在你的 webview 中调用这个方法

     if(isConnectingToInternet(LottoResultsActivity.this)){
        mWebView.loadUrl("http://www.mydomain.com/LRA/");
        }else{
    Toast.makeText(getApplicationContext(), "No Internet Connection", 
       Toast.LENGTH_LONG).show();
    }
    

    别忘了在 ma​​nifest 文件中添加以下权限

     <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    【讨论】:

    • 我添加了您建议的代码,但是当我有互联网连接时,它只会显示“已连接到 WIFI 网络 - 院长”,但页面仍然是白色的,没有任何信息。
    • 但是 isConnectingToInternet 方法只返回布尔值,因为 Internet 是否可用。
    猜你喜欢
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多