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 取消Title 头部标题栏
  3. Android(安卓)源码编译如何确定模块安装的位置
  4. android的文件操作
  5. Android(安卓)edittext刚进入页面取消焦点
  6. Android_linux下android platforms下载地址
  7. android的文件操作
  8. android 学习总结
  9. Android(安卓)SDK更新的问题

随机推荐

  1. Eclipse便于开发Android的快捷键大全
  2. 《Android内核剖析》读书笔记 第6章 应用
  3. 关于Android回调的理解
  4. Android(安卓)TextView文字太多显示的最
  5. 当我们讨论流畅度的时候,我们究竟在说什么
  6. iPhone 6 16G不够用?给iPhone 6扩容的技
  7. 05Android学习从零单排之Androidmultimed
  8. Android完整知识体系路线(菜鸟-资深-大牛
  9. App模块化及工程扩展
  10. [Android基础] VideoView