我有一个基于Web的应用程序,该应用程序启动时会在其中加载网址。我尝试在
时处理问题加载资源时,WiFi的互联网关闭(资源以异步格式加载)。
我正在使用onReceivedError(WebView view, int errorCode, String description, String failingUrl)
的WebViewClient
检查网址失败。我也尝试过onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)
。
但是在资源加载期间关闭WiFi互联网时,我没有收到任何失败的回调。
尝试一下:
您可以放置网络检查的条件,然后根据需要构建逻辑
WebView mWebView;
NetworkInfo networkInfoWifi = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_WIFI);
mWebView.setWebViewClient(mWebClient);
WebViewClient mWebClient = new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
return true;
}
@Override
public void onLoadResource(WebView view, String url){
if (networkInfoWifi.isConnected()) {
//Take action
}
}
}
希望这会起作用!
为网络更改创建接收器,您可以检测到网络已关闭或打开,如下所示,您可以将本地广播发送到您的活动-
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
int status = NetworkUtil.getConnectivityStatusString(context);
Log.e("network change reciever", "reciever");
if ("android.net.conn.CONNECTIVITY_CHANGE".equals(intent.getAction())) {
if (status == NetworkUtil.NETWORK_STATUS_NOT_CONNECTED) {
Log.e("network change reciever", "Not connected - updatevariable");
} else {
Log.e("network change reciever", "connected - update variable");
}
}
}
}
在menifest.xml
文件的下面添加行
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<receiver
android:name="NetworkChangeReceiver"
android:label="NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
</intent-filter>
</receiver>