Android判断网络是否可用并且开启网络

本文介绍了一个具体的 Android 应用案例,展示了如何使用 WebView 控件加载网络页面,并通过检测网络连接状态来提供更好的用户体验。文中详细解释了 WebView 的配置、网络检测、加载进度提示及返回键处理等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


package com.pocketdigi.webview;

  
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
  
 
public class main extends Activity {
    /** Called when the activity is first created. */
    WebView wv;
    ProgressDialog pd;
    Handler handler;
     
    //检测url
    private boolean isOpenNetwork() {
        ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connManager.getActiveNetworkInfo() != null) {
        return connManager.getActiveNetworkInfo().isAvailable();
        }
 
 
        return false;
        }
 
    private void initMoreGames() {  
        String URL_MOREGAMES = "http://www.baidu.com";  
        WebView mWebView = (WebView) findViewById(R.id.view_gamesort);  
       
        if (mWebView != null) {  
            mWebView.requestFocus();  
            WebSettings webSettings = mWebView.getSettings();  
            if (webSettings != null) {  
                webSettings.setJavaScriptEnabled(true);  
                webSettings.setCacheMode(MODE_PRIVATE);  
                webSettings.setDefaultTextEncodingName("utf-8");  
            }  
       
            // 判断网络是否可用  
            if(isOpenNetwork() == true) {  
                mWebView.loadUrl(URL_MOREGAMES);  
            else {  
                AlertDialog.Builder builder = new AlertDialog.Builder(MoreGamesActivity.this);  
                builder.setTitle("没有可用的网络").setMessage("是否对网络进行设置?");  
                   
                builder.setPositiveButton("是"new DialogInterface.OnClickListener() {  
                    @Override  
                    public void onClick(DialogInterface dialog, int which) {  
                        Intent intent = null;  
                           
                        try {  
                            String sdkVersion = android.os.Build.VERSION.SDK;  
                            if(Integer.valueOf(sdkVersion) > 10) {  
                                intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);  
                            }else {  
                                intent = new Intent();  
                                ComponentName comp = new ComponentName("com.android.settings""com.android.settings.WirelessSettings");  
                                intent.setComponent(comp);  
                                intent.setAction("android.intent.action.VIEW");  
                            }  
                            MoreGamesActivity.this.startActivity(intent);  
                        catch (Exception e) {  
                            Log.w(TAG, "open network settings failed, please check...");  
                            e.printStackTrace();  
                        }  
                    }  
                }).setNegativeButton("否"new DialogInterface.OnClickListener() {  
                    @Override  
                    public void onClick(DialogInterface dialog, int which) {  
                        dialog.cancel();          
                        finish();  
                    }  
                }).show();  
            }  
        else {  
            Log.w(TAG, "mWebView is null, please check...");  
        }  
    
    //检测url end
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();//执行初始化函数
        loadurl(wv,"http://baidu.com ");
    }
     
    public void init(){
        // Progress
        pd=new ProgressDialog(main.this);
        pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        pd.setMessage("数据载入中,请稍候!");
        // Show/Hide message
        handler=new Handler(){
        public void handleMessage(Message msg)
        {
            //定义一个Handler,用于处理下载线程与UI间通讯
        if (!Thread.currentThread().isInterrupted())
        {
        switch (msg.what)
        {
        case 0:
        pd.show();//显示进度对话框
        break;
        case 1:
        pd.hide();//隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
        break;
        }
        }
        super.handleMessage(msg);
        }
        };
        // WebView
        wv=(WebView)findViewById(R.id.wv);
        wv.getSettings().setJavaScriptEnabled(true);//可用JS
        wv.setScrollBarStyle(0);//滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
        wv.setWebViewClient(new WebViewClient(){
        public boolean shouldOverrideUrlLoading(final WebView view, final String url) {
        loadurl(view,url);//载入网页
        return true;
        }//重写点击动作,用webview载入
 
        });
        wv.setWebChromeClient(new WebChromeClient(){
        public void onProgressChanged(WebView view,int progress){//载入进度改变而触发
        if(progress==100){
        handler.sendEmptyMessage(1);//如果全部载入,隐藏进度对话框
        }
        super.onProgressChanged(view, progress);
        }
        });
        }
     
     
    public boolean onKeyDown(int keyCode, KeyEvent event) {//捕捉返回键
        if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {   
            wv.goBack();   
            return true;   
        }else if(keyCode == KeyEvent.KEYCODE_BACK){
            ConfirmExit();//按了返回键,但已经不能返回,则执行退出确认
            return true
        }   
        return super.onKeyDown(keyCode, event);   
    }
    public void ConfirmExit(){//退出确认
        AlertDialog.Builder ad=new AlertDialog.Builder(main.this);
        ad.setTitle("退出");
        ad.setMessage("是否退出商城?");
        ad.setPositiveButton("是"new DialogInterface.OnClickListener() {//退出按钮
            @Override
            public void onClick(DialogInterface dialog, int i) {
                // TODO Auto-generated method stub
                main.this.finish();//关闭activity
  
            }
        });
        ad.setNegativeButton("否",new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int i) {
                //不退出不用执行任何操作
            }
        });
        ad.show();//显示对话框
    }
    public void loadurl(final WebView view,final String url){
        new Thread(){
            public void run(){
                handler.sendEmptyMessage(0);
                view.loadUrl(url);//载入网页
            }
        }.start();
    }
  }
本文是小崔从一位大师的评论转载过来的,如果有抄袭清告诫小崔删掉。
小崔最近在做关于这方面的工程,所以为了方便才自己弄下来的。
而且可能有点错误,如有发现请大家指点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值