佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2498|回复: 17

android webviewclient

  [复制链接]
发表于 18-4-2011 12:40 PM | 显示全部楼层 |阅读模式
各位好,
我是android apps 的新手。。
我现在有个webview,当网页出现error的时候,例如error 404, 我想出现一些信息或转去其他的link.
但是它始终没有去到public void onReceivedError 这里。。。
不知各位有没有任何建议呢?
谢谢
  1. package com.yes;

  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.ProgressDialog;
  5. import android.content.Context;
  6. import android.content.DialogInterface;
  7. import android.content.Intent;
  8. import android.net.ConnectivityManager;
  9. import android.net.NetworkInfo;
  10. import android.os.Bundle;
  11. import android.util.Log;
  12. import android.view.View;
  13. import android.view.Window;
  14. import android.view.WindowManager;
  15. import android.webkit.WebChromeClient;
  16. import android.webkit.WebSettings;
  17. import android.webkit.WebView;
  18. import android.webkit.WebViewClient;

  19. public class LoadHome extends Activity {
  20.     /** Called when the activity is first created. */
  21.         private NetworkInfo networkInfo;
  22.     private ConnectivityManager connectManager;
  23.     private AlertDialog alertdialog;
  24.     private WebView webView;
  25.    
  26.     @Override
  27.     public void onCreate(Bundle savedInstanceState) {
  28.         super.onCreate(savedInstanceState);
  29.         if(savedInstanceState != null){
  30.                         ((WebView)this.findViewById(R.id.webview2)).restoreState(savedInstanceState);
  31.                 }
  32.         
  33.         this.requestWindowFeature(Window.FEATURE_NO_TITLE);
  34.         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
  35.                
  36.         this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
  37.         this.getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
  38.         
  39.         setContentView(R.layout.main);
  40.         
  41.         /*check for active network connection*/
  42.         boolean connected;
  43.         connectManager = (ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE);
  44.         networkInfo = connectManager.getActiveNetworkInfo();
  45.         if(networkInfo == null){
  46.                 connected = false;
  47.         }else{
  48.                 if(networkInfo.getState() == NetworkInfo.State.CONNECTED){
  49.                         connected = true;
  50.                 }else{
  51.                         connected = false;
  52.                 }
  53.         }
  54.         /*end*/
  55.         if(connected){
  56.                
  57.                 final Activity activity = this;  
  58.                 final ProgressDialog progressDialog = new ProgressDialog(activity);
  59.                 progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  60.                 progressDialog.setMessage("Loading...");
  61.                 progressDialog.setCancelable(false);
  62.                
  63.                 webView = (WebView)this.findViewById(R.id.webView1);
  64.                 webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
  65.                
  66.             WebSettings websettings = webView.getSettings();
  67.             websettings.setJavaScriptEnabled(true);
  68.             websettings.setBuiltInZoomControls(true);
  69.             websettings.setUseWideViewPort(true);

  70.             //webView.requestFocus(View.FOCUS_DOWN);
  71.             
  72.             webView.setInitialScale(1);
  73.             
  74.             webView.setWebChromeClient(new WebChromeClient() {
  75.                     public void onProgressChanged(WebView view, int progress) {
  76.                             progressDialog.show();         
  77.                             progressDialog.setProgress(0);  
  78.                             progressDialog.incrementProgressBy(progress);         
  79.                             if(progress == 100 && progressDialog.isShowing())            
  80.                                     progressDialog.dismiss();
  81.                     }
  82.             });
  83.             
  84.             webView.setWebViewClient(new WebViewClient() {
  85.                
  86.                 @Override
  87.                 public boolean shouldOverrideUrlLoading(WebView view, String url)
  88.                 {
  89.                         if(!url.equals(Configuration.home)){
  90.                                 Intent i = new Intent();
  91.                                 Bundle bun = new Bundle();
  92.                                 bun.putString("url", url);
  93.                                 i.setClassName("com.yes", "com.yes.LoadPage");
  94.                                 i.putExtras(bun);
  95.                                 startActivity(i);
  96.                                 finish();
  97.                         }else{
  98.                                 view.loadUrl(url);
  99.                         }
  100.                     return true;
  101.                 }
  102.                
  103.                 public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  104.                     // TODO Auto-generated method stub
  105.                         Log.i("page error", String.valueOf(errorCode));
  106.                 }
  107.             });
  108.             
  109.             webView.loadUrl(Configuration.home);           
  110.         }else{
  111.                 alertdialog = new AlertDialog.Builder(this).create();
  112.                 alertdialog.setMessage(Configuration.nointernetmsg);
  113.                 alertdialog.setButton("OK", new DialogInterface.OnClickListener() {
  114.                         public void onClick(DialogInterface dialog, int which) {
  115.                                          System.runFinalizersOnExit(true);
  116.                                          System.exit(0);
  117.                            }
  118.                         });
  119.                 alertdialog.show();
  120.                
  121.         }      
  122.         
  123.     }
  124.    
  125.     public void onSaveInstanceState(Bundle outState){
  126.                 webView.saveState(outState);
  127.         }
  128.    
  129. }
复制代码
回复

使用道具 举报


ADVERTISEMENT

发表于 23-8-2011 04:51 PM | 显示全部楼层
回复 1# jay_goh


   try catch 试过吗?
回复

使用道具 举报

 楼主| 发表于 23-8-2011 05:12 PM | 显示全部楼层
回复 2# win7qi


   谢谢你,我完成了那个project了。。
回复

使用道具 举报

发表于 23-8-2011 05:13 PM | 显示全部楼层
setWebViewClient 和 setWebViewClient有一样吗?
我看SDK都是 setWebViewClient 的

那 shouldOverrideUrlLoading 有正常工作吗?
回复

使用道具 举报

 楼主| 发表于 23-8-2011 05:28 PM | 显示全部楼层
setWebViewClient 和 setWebViewClient有一样吗?
我看SDK都是 setWebViewClient 的

那 shouldOverride ...
jackhui 发表于 23-8-2011 05:13 PM


setWebViewClient 和 setWebViewClient有什么不一样吗?shouldOverrideUrlLoading 有正常操作。
回复

使用道具 举报

发表于 23-8-2011 06:14 PM | 显示全部楼层
本帖最后由 jackhui 于 23-8-2011 06:18 PM 编辑
setWebViewClient 和 setWebViewClient有什么不一样吗?shouldOverrideUrlLoading 有正常操作。
jay_goh 发表于 23-8-2011 05:28 PM



    我就是不懂阿,才问你的。。

那你是怎样解决的?交流下
回复

使用道具 举报

Follow Us
 楼主| 发表于 23-8-2011 06:26 PM | 显示全部楼层
我就是不懂阿,才问你的。。

那你是怎样解决的?交流下
jackhui 发表于 23-8-2011 06:14 PM



   不好意思,因为事隔久了,忘记我怎么解决了。。不过我paste相关的code在这里,大家一起看看咯。。
  1. public void onReceivedError(WebView view, int errorCode,
  2.                         String description, String failingUrl) {
  3.                     // TODO Auto-generated method stub
  4.                         //Log.i("error", "error");
  5.                         //Toast.makeText(LoadHome.this, "fifth step", Toast.LENGTH_SHORT).show();
  6.                     super.onReceivedError(view, errorCode, description, failingUrl);
  7.                     webView.loadData("<html><body></body></html>", "text/html", "UTF-8");
  8.                     alertdialog = new AlertDialog.Builder(LoadHome.this).create();
  9.                         alertdialog.setMessage(Configuration.pageloaderror);
  10.                         alertdialog.setButton("OK", new DialogInterface.OnClickListener() {
  11.                                 public void onClick(DialogInterface dialog, int which) {
  12.                                         System.runFinalizersOnExit(true);
  13.                                              System.exit(0);
  14.                                    }
  15.                                 });
  16.                         alertdialog.show();
  17.                 }
复制代码
回复

使用道具 举报

发表于 24-8-2011 07:15 AM | 显示全部楼层
回复 3# jay_goh


   发给我研究一下 XD
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 24-8-2011 09:13 AM | 显示全部楼层
回复 8# win7qi


   对不起哦,那是公司的project,不方便发给你们。。
回复

使用道具 举报

发表于 24-8-2011 10:07 AM | 显示全部楼层
回复  win7qi


   对不起哦,那是公司的project,不方便发给你们。。
jay_goh 发表于 24-8-2011 09:13 AM



   公司什么名?
回复

使用道具 举报

发表于 24-8-2011 10:54 AM | 显示全部楼层
公司什么名?
win7qi 发表于 24-8-2011 10:07 AM



公司名:   麦搁啰嗦 (Microsoft)
回复

使用道具 举报

发表于 24-8-2011 11:23 AM | 显示全部楼层
回复 11# geekman


   LOL>>
回复

使用道具 举报

 楼主| 发表于 24-8-2011 11:26 AM | 显示全部楼层
回复 10# win7qi


   Extiva
回复

使用道具 举报

 楼主| 发表于 24-8-2011 11:26 AM | 显示全部楼层
回复 11# geekman


   如果是的话,也不错哦。。{:2_67:}
回复

使用道具 举报

发表于 24-8-2011 11:36 AM | 显示全部楼层
回复 13# jay_goh


   wa... 做的东西好厉害哦
回复

使用道具 举报

 楼主| 发表于 24-8-2011 11:54 AM | 显示全部楼层
回复 15# win7qi


   没有啦,我也是android apps 的初学者而言。。
回复

使用道具 举报


ADVERTISEMENT

发表于 24-8-2011 12:41 PM | 显示全部楼层
本帖最后由 geekman 于 24-8-2011 12:46 PM 编辑

回复 14# jay_goh


    哈哈,“麦搁啰嗦” 应该不会请人来开发 “安桌椅”(android)软件的啦。。。他们有自家的 “昏倒风7号”。

轻松一下:
http://rivercomic543.pixnet.net/blog/post/31465322
回复

使用道具 举报

发表于 24-8-2011 01:13 PM | 显示全部楼层
回复  jay_goh


    哈哈,“麦搁啰嗦” 应该不会请人来开发 “安桌椅”(android)软件的啦。。。他们 ...
geekman 发表于 24-8-2011 12:41 PM


芒果都出来了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-11-2025 06:41 AM , Processed in 0.112324 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表