public class WebView_404 extends Activity {     private final String HOMEPAGE = "http://www.abchina.com";//请求的网站的主页     private WebView web;     private Handler handler = new Handler() {             @Override             public void handleMessage(Message msg) {                     if(msg.what==404) {//主页不存在                             //载入本地assets文件夹下面的错误提示页面404.html                             web.loadUrl("file:///android_asset/404.html");                     } else {                             web.loadUrl(HOMEPAGE);                     }             }     };         @Override     protected void onCreate(Bundle savedInstanceState) {             super.onCreate(savedInstanceState);             setContentView(R.layout.main);             web = (WebView) findViewById(R.id.webview);             web.getSettings().setJavaScriptEnabled(true);             web.setWebViewClient(new WebViewClient() {                     @Override                     public boolean shouldOverrideUrlLoading(WebView view, String url) {                             if(url.startsWith("http://") && getRespStatus(url)==404) {                                     view.stopLoading();                                     //载入本地assets文件夹下面的错误提示页面404.html                                     view.loadUrl("file:///android_asset/404.html");                             } else {                                     view.loadUrl(url);                             }                             return true;                     }             });             new Thread(new Runnable() {                     @Override                     public void run() {                             Message msg = new Message();                             //此处判断主页是否存在,因为主页是通过loadUrl加载的,                             //此时不会执行shouldOverrideUrlLoading进行页面是否存在的判断                             //进入主页后,点主页里面的链接,链接到其他页面就一定会执行shouldOverrideUrlLoading方法了                             if(getRespStatus(HOMEPAGE)==404) {                                     msg.what = 404;                             }                             handler.sendMessage(msg);                     }             }).start();     }         @Override     public boolean onKeyDown(int keyCode, KeyEvent event) {             if(keyCode==KeyEvent.KEYCODE_BACK && web.canGoBack()) {                     web.goBack();                     return false;             }             return super.onKeyDown(keyCode, event);     }         private int getRespStatus(String url) {             int status = -1;             try {                     HttpHead head = new HttpHead(url);                     HttpClient client = new DefaultHttpClient();                     HttpResponse resp = client.execute(head);                     status = resp.getStatusLine().getStatusCode();             } catch (IOException e) {}             return status;     } }


更多相关文章

  1. Android引导页面去除白屏
  2. Android edittext刚进入页面取消焦点
  3. android,进入页面textview默认获得焦点问题,如何取消焦点
  4. 扫描二维码自动识别手机系统(Android/IOS)跳转不同页面
  5. Android 输入法键盘和activity页面遮挡问题解决
  6. Android 原生页面同H5交互
  7. 关于Android初级逻辑思考(续)——android文件夹讲解
  8. JS与Android交互之html页面跳转到Android Activity
  9. Android多国语言文件夹命名

随机推荐

  1. Android在SDcard建文件夹(在Android中移动
  2. android:configChanges属性
  3. webkit for android
  4. Android(安卓)读取元素中的数据
  5. Android设置Activity背景为透明style
  6. Android调用系统默认浏览器访问的方法
  7. 解决Error running app:Instant Run requ
  8. Android(安卓)线程超时的例子
  9. ImageView的scaletype属性
  10. Android(安卓)Building System 分析