首先第一个 解析流转换成字符串的工具类 StreamToString
第2个判断网络是否连接的工具类 NetStateUtileimport java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * Created by Administrator on 2018/1/12. */ public class StreamToString { public static String streamToString(InputStream inputStream){ ByteArrayOutputStream outputStream=null; try { outputStream = new ByteArrayOutputStream(); byte[] b=new byte[1024]; int len; while ((len=inputStream.read(b))!=-1){ outputStream.write(b,0,len); } } catch (IOException e) { e.printStackTrace(); } return outputStream.toString(); } }
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 com.bwie.com.yuekaomoni.R; /** * 得到网络状态的工具类 * Created by e531 on 2017/10/16. */ public class NetStateUtil { /* * 判断网络连接是否已开 * true 已打开 false 未打开 * */ public static boolean isConn(Context context){ boolean bisConnFlag=false; ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo network = conManager.getActiveNetworkInfo(); if(network!=null){ bisConnFlag=conManager.getActiveNetworkInfo().isAvailable(); } return bisConnFlag; } /** * 当判断当前手机没有网络时选择是否打开网络设置 * @param context */ public static void showNoNetWorkDlg(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.mipmap.ic_launcher) // .setTitle(R.string.app_name) // .setMessage("当前无网络").setPositiveButton("设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 跳转到系统的网络设置界面 Intent intent = null; // 先判断当前系统版本 if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上 intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); }else{ intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings"); } context.startActivity(intent); } }).setNegativeButton("知道了", null).show(); } }第三个工具类是 带接口回调的 异步访问工具类 MyTask
import android.os.AsyncTask; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by Administrator on 2018/1/11. */ public class MyTask extends AsyncTask<String,Void,String> { //申请一个接口类对象 private ICallBacks iCallBacks; //将无参构造设置成私有的,使外部不能够调用 public MyTask() { } //定义有参构造方法 public MyTask(ICallBacks iCallBacks) { this.iCallBacks = iCallBacks; } @Override protected String doInBackground(String... strings) { try { URL url=new URL(strings[0]); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setConnectTimeout(5000); urlConnection.setReadTimeout(5000); if (urlConnection.getResponseCode()==200){ InputStream inputStream = urlConnection.getInputStream(); //调用工具类中的静态方法 String s = StreamToString.streamToString(inputStream); return s; }else if(urlConnection.getResponseCode()==301||urlConnection.getResponseCode()==302){ //拿到重定向的地址 String newUrl = urlConnection.getHeaderField("location"); URL u=new URL(newUrl); HttpURLConnection connection= (HttpURLConnection) u.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); if (connection.getResponseCode()==200){ InputStream inputStream = connection.getInputStream(); //调用工具类中的静态方法 String s = StreamToString.streamToString(inputStream); return s; } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); iCallBacks.getJson(s); } //定义一个接口 public interface ICallBacks{ void getJson(String json); } }第四个是ImageLoader的全局配置
import android.app.Application; import android.os.Environment; import android.util.Log; import android.widget.Toast; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.io.File; /** * Created by jane on 2018/1/3. * Application->Context 子类 */ public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); Log.d("zzz","App入口"); Toast.makeText(this,"app",Toast.LENGTH_SHORT).show(); //自定义sd卡缓存目录 1.android默认cache-app被卸载时,缓存的目录一并被删除 2.自定义 // File cachefile=getExternalCacheDir(); File cachefile= new File(Environment.getExternalStorageDirectory().getPath()+"/images"); //1.初使化--进行一下全局配置 Application ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this) .memoryCacheExtraOptions(400, 700)//缓存图片最大的长和宽 .threadPoolSize(3)//线程池的数量 .threadPriority(4) .memoryCacheSize(20*1024*1024)//设置内存缓存区大小 .diskCacheSize(80*1024*1024)//设置sd卡缓存区大小 .diskCache(new UnlimitedDiscCache(cachefile))//自定义sd卡缓存目录 .writeDebugLogs()//打印日志内容 .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理 .build(); ImageLoader.getInstance().init(configuration); } }