网络工具类

本文介绍了一个基于静态内部类实现的单例模式网络信息工具类,用于判断Android设备上的网络连接状态,并提供网络类型识别功能。该工具类在Activity中简单调用即可检查网络并提示用户进行设置。

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

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.provider.Settings;
import android.util.Log;


/**
 * Created by chao0 on 2016/3/2.
 */
/**
 * 基于静态内部类实现的单例,保证线程安全的网络信息工具类 <per> 使用该工具类之前,记得在AndroidManifest.xml添加权限许可 <xmp>
 * <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 * </xmp> </per>
 * 安卓判断网络状态,只需要在相应的Activity的相关方法(onCreat/onResum)调用一行代码即可
 * NetWorkUtils.getInstance(getActivity()).validateNetWork();
 */
public class ToolNetWork {
    /** 网络连接方式 CMWAP*/
    private static final String NETWORK_CMWAP="CMWAP";
    /** 网络连接方式 CMNET*/
    private static final String NETWORK_CMNET="CMNET";
    /** 网络连接方式 WIFI*/
    private static final String NETWORK_WIFI="WIFI";
    private static final String TAG ="ToolNetWork" ;
    private static NetworkInfo networkInfo;
    private Context contxt;
    private ToolNetWork() {
    }
    public ToolNetWork getToolNetWork(Context context){
        this.contxt=context;
        return this;
    }
    /** 判断网络是否可用
     * return /     * */
    public boolean isAvailable(){
        ConnectivityManager manager= (ConnectivityManager) contxt.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        if (manager==null){
            return false;
        }
        networkInfo=manager.getActiveNetworkInfo();
        if (networkInfo==null||networkInfo.isAvailable()){
            return false;
        }
        return true;
    }
    /**
     *判断网络连接是否可用
     * return /     * */
    public boolean isConnected(){
        if (!isAvailable()){
            return false;
        }
        if (networkInfo.isConnected()){
            return false;
        }
        return true;
    }
    // 检查当前环境网络是否可用,不可用跳转至开启网络界面,不设置网络强制关闭当前Activity
    public void validateNetWork(){
    if (!isConnected()){
        AlertDialog.Builder dialogBuilder=new AlertDialog.Builder(contxt);
        dialogBuilder.setTitle("网络设置").setMessage("当前网络不可用,是否现在设置网络").setPositiveButton("", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                ((Activity)contxt).startActivityForResult(new Intent(Settings.ACTION_SETTINGS),which);
            }
        }).setNegativeButton("", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

            }
        }).create().show();
    }
    }
    /**
     * 获取网络连接信息</br> 无网络:</br> WIFI网络:WIFI</br> WAP网络:CMWAP</br>
     * NET网络:CMNET</br>
     *
     * @return
     */
    public String getNetWorkType(){
        if (isConnected()){
            int type=networkInfo.getType();
            if (ConnectivityManager.TYPE_MOBILE==type){
                Log.i(TAG,
                        "networkInfo.getExtraInfo()-->"
                                + networkInfo.getExtraInfo());
                if (NETWORK_CMNET.equals(networkInfo.getExtraInfo().toLowerCase())){
                    return NETWORK_CMNET;
                }else{
                    return NETWORK_CMWAP;
                }

            }else if (ConnectivityManager.TYPE_WIFI==type){
                return NETWORK_WIFI;
            }
        }
        return null;
    }
    private static  class SingletonHolder{
        private static ToolNetWork toolNetWork=new ToolNetWork();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值