我想为Android创建一个Web应用程序。 当我单击按钮时,应用程序会打开一个网页。
如果我有互联网连接,该应用程序运行正常。
如果我禁用互联网连接,我会收到一条消息:“找不到网页”,并显示网页链接。
我的问题是:
1:如何保护网页链接和
2:如何禁用未找到网页
的错误消息答案 0 :(得分:3)
我认为一个例子可以帮助你。
WebViewClient
来获取错误事件。load
错误HTML
页面代码示例是:
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class TestWebView extends Activity {
private WebView webView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.full_screen_image_layout);
webView = (WebView) findViewById(R.id.fullScreenImageWebView);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setSupportZoom(true);
webView.setWebViewClient(new WebViewClient() {
/*
* (non-Javadoc)
*
* @see
* android.webkit.WebViewClient#onReceivedError(android.webkit.WebView
* , int, java.lang.String, java.lang.String)
*/
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
// TODO Auto-generated method stub
super.onReceivedError(view, errorCode, description, failingUrl);
loadError();
}
});
webView.loadUrl("http://www.google.com");
}
private void loadError() {
String html = "<html><body><table width=\"100%\" height=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">"
+ "<tr>"
+ "<td><div align=\"center\"><font color=\"red\" size=\"20pt\">Your device don't have active internet connection</font></div></td>"
+ "</tr>" + "</table><html><body>";
System.out.println("html " + html);
String base64 = android.util.Base64.encodeToString(html.getBytes(),
android.util.Base64.DEFAULT);
webView.loadData(base64, "text/html; charset=utf-8", "base64");
System.out.println("loaded html");
}
}
答案 1 :(得分:2)
首先,您必须使用以下代码段检查互联网连接
public boolean isNetworkAvailable() {
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
// if no network is available networkInfo will be null
// otherwise check if we are connected
if (networkInfo != null && networkInfo.isConnected()) {
return true;
}
return false;
}
然后检查布尔变量的值,如果它返回true,那么你的连接可用,如果它返回false,则向用户显示一些错误消息。
我希望你能得到我的逻辑
答案 2 :(得分:0)
我不知道webview是否允许这样做,但你可以先check the internet connection。如果连接可用,则显示WebView,如果没有显示错误消息。
答案 3 :(得分:0)
public void onReceivedError(WebView webView, int errorCode, String description, String failingUrl) {
try {
webView.stopLoading();
} catch (Exception e) {
}
try {
webView.clearView();
} catch (Exception e) {
}
if (webView.canGoBack()) {
webView.goBack();
}
webView.loadUrl("file:///android_asset/path_to_file");
super.onReceivedError(webView, errorCode, description, failingUrl);
}a
private WebViewClient client = new WebViewClient() {
// ... override whatever, including the onReceivedError method above
}
WebView webView = new WebView(context);
webView.setWebViewClient(client);
您可以查看以上代码