網絡工具類

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();
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章