android中,用了webview载入了一个页面 http://0791.8ff.cn/test/test.html用android手机运行程序时,如果手机连单位上的无线网,是可正常访问的。
可如果手机断开单位上的无线网,用手机上的移动卡的网,就打不开webview中页面,此时,我在手机自带的浏览器中输入上面的url,是可正常访问的现问:为什么我用手机上的移动卡上的网不能正常载入webview中的页面呢,如何解决呀,thanks

解决方案 »

  1.   

    用Gprs访问  分两种情况cmnet  跟 wifi 一样 可以直接访问网络cmwap 需要设置代理才可以楼主的 URLConnect 设置一下代码 试试 
      

  2.   


    public synchronized static HttpURLConnection createHttpURLConnection(URL url) {
    HttpURLConnection uc = null;
    try{
    if (netType == NetType.CMWAP) {// cmwap 上网模式, 使用代理
    Proxy proxy = new Proxy(java.net.Proxy.Type.HTTP,
    new InetSocketAddress(PROXY_SERVER, 80));
    uc = (HttpURLConnection) url.openConnection(proxy);
    // 还有一个是Apache的HttpClient:
    // DefaultHttpClient httpclient = new DefaultHttpClient();
    // HttpHost proxy = new HttpHost(PROXY_SERVER, 80);
    // httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
    // proxy);
    }else{
    uc = (HttpURLConnection) url.openConnection();
    }
    }catch(Exception e){
    e.printStackTrace();
    }
    return uc;
    }
    protected static String PROXY_SERVER = "10.0.0.172";移动联通的代理都是 10.0.0.172
      

  3.   

    1. webview和手机自带的浏览器上网是一样的,检查一下你的浏览器是否设置了代理2. 如果你是移动的用户,确保你使用的是CMNET
      

  4.   


    HttpURLConnection  这个类不会用? 用他设置代理
      

  5.   

    多谢大家,
    回6楼的,我在浏览器中输入页面的url,访问正常,可在webview中运行不正常,
    这种情况需要设置代理吗?
      

  6.   


    用手机上的移动卡的网,就打不开webview中页面,此时,我在手机自带的浏览器中输入上面的url,是可正常访问的
    。。看你的情况。 必须设置代理
      

  7.   

    且慢。 你把webview 中获取网页内容的代码贴出来看看
      

  8.   

    回十楼的,
    webview中代码如下
    package com.webview;
    import java.util.Timer;
    import java.util.TimerTask;
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.ProgressDialog;
    import android.content.DialogInterface;
    import android.content.Intent;import android.view.KeyEvent;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    import android.os.Handler;
    import android.os.Message;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.AdapterView.AdapterContextMenuInfo;
    import android.widget.Toast;public class SearReActivity extends Activity {
    WebView wv;
    ProgressDialog pd;
    Handler handlert2;
    private TextView ftextView1; 
    private static Boolean isExit = false;
    private static Boolean hasTask = false;
    private String urlFG;
    private String urlf;
    private String fid;
    private String tid;
    private String srchtxt;
        private ImageView imageView1;
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.sear_re);

            Intent inte=getIntent();             
        srchtxt=inte.getStringExtra("srchtxt"); 
    handlert2=new Handler()
         {
      public void handleMessage(android.os.Message msg) {
     
     
      switch(msg.what){
      case 0:
      pd.show();
      break;
      case 1:
      pd.hide();
      break;
      }
     
      };
      };
        init();
       urlf="http://0791.8ff.cn/test/test.html";     
        loadUrl(wv, urlf);
    }

        public void init(){
         wv=(WebView) findViewById(R.id.sear_re);
         //可用js
         wv.getSettings().setJavaScriptEnabled(true);
         //滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
         wv.setScrollBarStyle(0);
         wv.setWebViewClient(new WebViewClient(){
         @Override
         public boolean shouldOverrideUrlLoading(WebView view, String url) 
         {         loadUrl(view, url);
             return true;
         }
         });
        
         wv.setWebChromeClient(new WebChromeClient(){
         @Override
         public void onProgressChanged(WebView view, int newProgress) {
         if(newProgress==100){
         handlert2.sendEmptyMessage(1);
         }
         super.onProgressChanged(view, newProgress);
         }
         }); 
         pd=new ProgressDialog(SearReActivity.this);
         pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
         pd.setMessage("数据加载中,请稍候...");
        }
        public void loadUrl(final WebView webView,final String url){
         new Thread(){
         @Override
         public void run() {
         handlert2.sendEmptyMessage(0);
         webView.loadUrl(url);
         }
         }.start();
        }

    //
    }
      

  9.   

    现问:为什么我用手机上的移动卡上的网不能正常载入webview中的页面呢,如何解决呀,thanks
      

  10.   


    你直接 webView.loadUrl(url);  用webView的 loadUrl 方法加载的?? 
      

  11.   

    回13楼的,是用 webView.loadUrl(url);  加载的,
    webview全部代码我放在11楼,你帮我看下这问题,
      

  12.   

    package com.nc;import org.apache.http.HttpHost;
    import org.apache.http.conn.params.ConnRouteParams;import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.PackageManager.NameNotFoundException;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.provider.Settings;
    import android.view.KeyEvent;
    import android.widget.TextView;
    import android.widget.Toast;import com.http.HTTPRequestHelper;
    import com.opennet.NetworkControl;
    import com.opennet.NetworkControl.NetType;/**
     * 闪屏页面
     * @author 
     *
     */
    public class SplashActivity extends Activity {
    //闪屏线程休眠时间
    private static final int SPALSH_TIME = 10;
    //闪屏总时间
    private static final int SPLASH_INDEX_COUNT = 30;
    //当前计数
    private int splash_index;
    //线程执行的条件
    private boolean stop;
    //UI线程
    private SplashHandler myHandler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);

            PackageManager pm = getPackageManager();
            try {
                   PackageInfo pi = pm.getPackageInfo("com.nc", 0);
                   TextView versionNumber = (TextView) findViewById(R.id.versionNumber);
                   versionNumber.setText("Version " + "1.0");
               } catch (NameNotFoundException e) {
                   e.printStackTrace();
               }

    myHandler = new SplashHandler();
    startHandler();
    //on end }

    @Override
    protected void onResume() {
    super.onResume();
    startHandler();
    }

    //启动线程
    private void startHandler(){
    stop = true;
    myHandler.sleep(SPALSH_TIME);
    } private void openUserNetwork(){
    //网络连接正常
    if (NetworkControl.getNetworkState(this)){
    NetType netType = NetworkControl.getNetType(this); if (netType != null) {
    //GPRS要设置代理
    if(netType.isWap()){
    HttpHost proxy = new HttpHost( "10.0.0.172", 80, "http");
    HTTPRequestHelper.client.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy);
    }
    }
    Intent intent = new Intent();
         intent.setClass(SplashActivity.this, MainActivity.class);
         startActivity(intent);
         finish();
    }
    //没开网络
    else{
    Toast.makeText(this,R.string.toast_net_no, Toast.LENGTH_LONG).show();

    new AlertDialog.Builder(SplashActivity.this).setTitle(R.string.net_set)
    .setMessage(R.string.net_set_message)
    .setPositiveButton(R.string.net_set_yes, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    intoNetSetting();
    }
    })
    .setNegativeButton(R.string.net_set_no, new  DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
    finish();
    }
    })
    .create().show();
    }
    }

    private void openNetwork(){
    stop = false;
    splash_index = 0;
    openUserNetwork();
    }

    //进入设置界面
    private void intoNetSetting(){
    Intent intent = new Intent(Settings.ACTION_WIRELESS_SETTINGS);
    startActivity(intent);
    } public class SplashHandler extends Handler {
            @Override
            public void handleMessage(Message msg) {
             if(splash_index > SPLASH_INDEX_COUNT){
             openNetwork();
             }
             else{
             myHandler.sleep(SPALSH_TIME);
             splash_index ++;
             }
            }
            public void sleep(long delayMillis) {
             if(stop){
             removeMessages(0);
                sendMessageDelayed(obtainMessage(0), delayMillis);
             }
            }
        };
        
        public boolean onKeyDown(int keyCode, android.view.KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0){

    }
    return false;
    };
        
    }