public class MainActivity extends AppCompatActivity { ConnectivityBroadcastReceiver mConnectivityBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //注册 IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); mConnectivityBroadcastReceiver = new ConnectivityBroadcastReceiver(); registerReceiver(mConnectivityBroadcastReceiver, filter); } //测试一下 public void onTestBaseUrl(View view){ Toast.makeText(MainActivity.this,NetUtils.getInstance().getBASE_URL(),Toast.LENGTH_SHORT).show(); } public void onClick(View view){ String[] strings={"最佳效果", "较省流量", "极省流量"}; int mode= Myapp.getMyapp().getSharedPreferences(NetUtils.SP_NAME,Context.MODE_PRIVATE).getInt(NetUtils.PICTURE_LOAD_MODE_KEY,0); AlertDialog.Builder builder=new AlertDialog.Builder(this); builder.setTitle("非wife网络流量"); builder.setSingleChoiceItems(strings, mode, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { TODO: 2017/8/10 要保存我们的图片加载模式 Myapp.getMyapp().getSharedPreferences(NetUtils.SP_NAME,Context.MODE_PRIVATE).edit().putInt(NetUtils.PICTURE_LOAD_MODE_KEY,which).commit(); dialog.dismiss(); } }); builder.setNegativeButton("取消",null); builder.create().show(); } * 接受网络状态的改变 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(); } TODO: 2017/8/10 改变一下网络状态 NetUtils.getInstance().changeNetState(isMobileConnectivity); } } } @Override protected void onDestroy() { super.onDestroy(); //解注册 unregisterReceiver(mConnectivityBroadcastReceiver); } }Application类:public class Myapp extends Application { private static Myapp myapp; @Override public void onCreate() { super.onCreate(); myapp=this; } public static Context getMyapp(){ return myapp; } }NetUtils类:
public class NetUtils { private static NetUtils netutils; public static final String SP_NAME = "SP_NAME"; public static final String PICTURE_LOAD_MODE_KEY = "PICTURE_LOAD_MODE_KEY"; private static final String BASE_URL_BIG_PICTURE = "http://www.big.picture"; private static final String BASE_URL_SMALL_PICTURE = "http://www.small.picture"; private static final String BASE_URL_NO_PICTURE = "http://www.no.picture"; //baseurl默认使用大图的模式 private String BASE_URL = BASE_URL_BIG_PICTURE; private boolean isMobileConnectivity = true; public NetUtils(){ } //单例模式 public static NetUtils getInstance(){ if (netutils==null){ synchronized (NetUtils.class){ if (netutils==null){ netutils=new NetUtils(); } } } return netutils; } * 使用get post请求的时候,调用这个方法获取我们的baseUrl,直接去请求就可以 public String getBASE_URL(){ // TODO: 2017/8/10 根据网络状态和用户选择,选择对应的baseurl if (isMobileConnectivity){ TODO: 2017/8/10 根据用户选择 返回对应的url int mode= Myapp.getMyapp().getSharedPreferences(SP_NAME, Context.MODE_PRIVATE).getInt(PICTURE_LOAD_MODE_KEY,0); switch (mode){ case 0: BASE_URL=BASE_URL_BIG_PICTURE; break; case 1: BASE_URL=BASE_URL_SMALL_PICTURE; break; case 2: BASE_URL=BASE_URL_NO_PICTURE; break; } }else { BASE_URL=BASE_URL_BIG_PICTURE; } return BASE_URL; } //更改我们当前的网络状态 public void changeNetState(boolean isMobileConnectivity ){ this.isMobileConnectivity=isMobileConnectivity; } }<!--上网权限 和 获取网络状态的权限--> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
非wifi用户选在图片加载模式
最新推荐文章于 2024-07-22 12:26:20 发布