ConnectivityManager判断当前网络连接类型,非WiFi网络流量加载模式

来源:互联网 发布:河北网络集成商 编辑:程序博客网 时间:2024/06/06 19:01

Activity

shezhi1 = (ImageView) slidingMenu.findViewById(R.id.shezhi);shezhi1.setOnClickListener(this); 点击事件
@Overridepublic void onClick(View v) {    switch (v.getId()) {        case R.id.IV:            slidingMenu.toggle();            break;        case R.id.IV4:            Intent intent = new Intent(MainActivity.this,Twoactivity.class);            startActivity(intent);            break;        case R.id.shezhi:            String[] strings = {"最佳效果", "较省流量", "极省流量"};            final AlertDialog.Builder builder = new AlertDialog.Builder(this);            builder.setTitle("WiFi下载,请注意");            builder.setNegativeButton("取消",null);            int mode = App.appcontext().getSharedPreferences(NetUtils.BAOCUN, Context.MODE_PRIVATE).getInt(NetUtils.KEY, 0);            builder.setSingleChoiceItems(strings,mode, new DialogInterface.OnClickListener() {                @Override                public void onClick(DialogInterface dialog, int which) {                    App.appcontext().getSharedPreferences(NetUtils.BAOCUN,Context.MODE_PRIVATE).edit().putInt(NetUtils.KEY,which).commit();                    dialog.dismiss();                }            });            builder.create().show();            break;    }网络判断
IntentFilter filter = new IntentFilter();filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);mConnectivityBroadcastReceiver = new ConnectivityBroadcastReceiver();registerReceiver(mConnectivityBroadcastReceiver, filter);

/** * 接受网络状态的改变 */public class ConnectivityBroadcastReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {            boolean isMobileConnectivity = true;            //如果能走到这,说明网络已经发生变化            ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);            NetworkInfo activeNetworkInfo = manager.getActiveNetworkInfo();            if (activeNetworkInfo != null && activeNetworkInfo.isConnected()) {                if (ConnectivityManager.TYPE_WIFI == activeNetworkInfo.getType()) {                    Toast.makeText(MainActivity.this, "当前wifi模式", Toast.LENGTH_SHORT).show();                    isMobileConnectivity = false;                    //移动网络                } else if (ConnectivityManager.TYPE_MOBILE == activeNetworkInfo.getType()) {                    Toast.makeText(MainActivity.this, "当前移动网络,请注意", Toast.LENGTH_SHORT).show();                    isMobileConnectivity = true;                    //获得现在的网络状态 是移动网络,去改变我们的访问接口                } else {                    Toast.makeText(MainActivity.this, "网络不可用,请检查网络", Toast.LENGTH_SHORT).show();                }            } else {                Toast.makeText(MainActivity.this, "网络不可用,请检查网络", Toast.LENGTH_SHORT).show();            }            NetUtils.danli().changeNetState(isMobileConnectivity);        }    }

App

private static App app;@Overridepublic void onCreate() {    super.onCreate();    app = this;}
  public static Context appcontext(){    return app;}


Netutils

public class NetUtils {    public static final String BAOCUN = "BAOCUN";    private static String TU1="大图显示";    private static  String TU2="中图显示";    private static  String TU3="小图实现";    private static NetUtils netUtils;    public  static String KEY="KEY";    private static String MOREN=TU1;    private static boolean isMobileConnectivity = true;    private NetUtils(){    }    //单例模式    public static NetUtils danli(){        if (netUtils==null){            synchronized (NetUtils.class){                if (netUtils==null){                    netUtils = new NetUtils();                }            }        }        return netUtils;    }    public static String moshi(){        if (isMobileConnectivity){            int mode = App.appcontext().getSharedPreferences(BAOCUN, Context.MODE_PRIVATE).getInt(KEY, 0);            switch (mode){                case 0:                    MOREN = TU1;                break;                case 1:                    MOREN = TU2;                break;                case 2:                    MOREN = TU3;                break;            }        }else {            MOREN=TU1;        }                return MOREN;    }    public void changeNetState(boolean isMobileConnectivity) {        this.isMobileConnectivity = isMobileConnectivity;    }}