Android快速开发系列 10个常用工具类

摘要:
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~在此感谢群里给我发项目中工具类的兄弟/姐妹~1、日志工具类L.java[java]viewplaincopypackagecom

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】

打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~

在此感谢群里给我发项目中工具类的兄弟/姐妹~

1、日志工具类L.java
  1. packagecom.zhy.utils;
  2. importandroid.util.Log;
  3. /**
  4. *Log统一管理类
  5. *
  6. *
  7. *
  8. */
  9. publicclassL
  10. {
  11. privateL()
  12. {
  13. /*cannotbeinstantiated*/
  14. thrownewUnsupportedOperationException("cannotbeinstantiated");
  15. }
  16. publicstaticbooleanisDebug=true;//是否需要打印bug,可以在application的onCreate函数里面初始化
  17. privatestaticfinalStringTAG="way";
  18. //下面四个是默认tag的函数
  19. publicstaticvoidi(Stringmsg)
  20. {
  21. if(isDebug)
  22. Log.i(TAG,msg);
  23. }
  24. publicstaticvoidd(Stringmsg)
  25. {
  26. if(isDebug)
  27. Log.d(TAG,msg);
  28. }
  29. publicstaticvoide(Stringmsg)
  30. {
  31. if(isDebug)
  32. Log.e(TAG,msg);
  33. }
  34. publicstaticvoidv(Stringmsg)
  35. {
  36. if(isDebug)
  37. Log.v(TAG,msg);
  38. }
  39. //下面是传入自定义tag的函数
  40. publicstaticvoidi(Stringtag,Stringmsg)
  41. {
  42. if(isDebug)
  43. Log.i(tag,msg);
  44. }
  45. publicstaticvoidd(Stringtag,Stringmsg)
  46. {
  47. if(isDebug)
  48. Log.i(tag,msg);
  49. }
  50. publicstaticvoide(Stringtag,Stringmsg)
  51. {
  52. if(isDebug)
  53. Log.i(tag,msg);
  54. }
  55. publicstaticvoidv(Stringtag,Stringmsg)
  56. {
  57. if(isDebug)
  58. Log.i(tag,msg);
  59. }
  60. }

网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~

2、Toast统一管理类
  1. packagecom.zhy.utils;
  2. importandroid.content.Context;
  3. importandroid.widget.Toast;
  4. /**
  5. *Toast统一管理类
  6. *
  7. */
  8. publicclassT
  9. {
  10. privateT()
  11. {
  12. /*cannotbeinstantiated*/
  13. thrownewUnsupportedOperationException("cannotbeinstantiated");
  14. }
  15. publicstaticbooleanisShow=true;
  16. /**
  17. *短时间显示Toast
  18. *
  19. *@paramcontext
  20. *@parammessage
  21. */
  22. publicstaticvoidshowShort(Contextcontext,CharSequencemessage)
  23. {
  24. if(isShow)
  25. Toast.makeText(context,message,Toast.LENGTH_SHORT).show();
  26. }
  27. /**
  28. *短时间显示Toast
  29. *
  30. *@paramcontext
  31. *@parammessage
  32. */
  33. publicstaticvoidshowShort(Contextcontext,intmessage)
  34. {
  35. if(isShow)
  36. Toast.makeText(context,message,Toast.LENGTH_SHORT).show();
  37. }
  38. /**
  39. *长时间显示Toast
  40. *
  41. *@paramcontext
  42. *@parammessage
  43. */
  44. publicstaticvoidshowLong(Contextcontext,CharSequencemessage)
  45. {
  46. if(isShow)
  47. Toast.makeText(context,message,Toast.LENGTH_LONG).show();
  48. }
  49. /**
  50. *长时间显示Toast
  51. *
  52. *@paramcontext
  53. *@parammessage
  54. */
  55. publicstaticvoidshowLong(Contextcontext,intmessage)
  56. {
  57. if(isShow)
  58. Toast.makeText(context,message,Toast.LENGTH_LONG).show();
  59. }
  60. /**
  61. *自定义显示Toast时间
  62. *
  63. *@paramcontext
  64. *@parammessage
  65. *@paramduration
  66. */
  67. publicstaticvoidshow(Contextcontext,CharSequencemessage,intduration)
  68. {
  69. if(isShow)
  70. Toast.makeText(context,message,duration).show();
  71. }
  72. /**
  73. *自定义显示Toast时间
  74. *
  75. *@paramcontext
  76. *@parammessage
  77. *@paramduration
  78. */
  79. publicstaticvoidshow(Contextcontext,intmessage,intduration)
  80. {
  81. if(isShow)
  82. Toast.makeText(context,message,duration).show();
  83. }
  84. }

也是非常简单的一个封装,能省则省了~~

3、SharedPreferences封装类SPUtils
  1. packagecom.zhy.utils;
  2. importjava.lang.reflect.InvocationTargetException;
  3. importjava.lang.reflect.Method;
  4. importjava.util.Map;
  5. importandroid.content.Context;
  6. importandroid.content.SharedPreferences;
  7. publicclassSPUtils
  8. {
  9. /**
  10. *保存在手机里面的文件名
  11. */
  12. publicstaticfinalStringFILE_NAME="share_data";
  13. /**
  14. *保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
  15. *
  16. *@paramcontext
  17. *@paramkey
  18. *@paramobject
  19. */
  20. publicstaticvoidput(Contextcontext,Stringkey,Objectobject)
  21. {
  22. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  23. Context.MODE_PRIVATE);
  24. SharedPreferences.Editoreditor=sp.edit();
  25. if(objectinstanceofString)
  26. {
  27. editor.putString(key,(String)object);
  28. }elseif(objectinstanceofInteger)
  29. {
  30. editor.putInt(key,(Integer)object);
  31. }elseif(objectinstanceofBoolean)
  32. {
  33. editor.putBoolean(key,(Boolean)object);
  34. }elseif(objectinstanceofFloat)
  35. {
  36. editor.putFloat(key,(Float)object);
  37. }elseif(objectinstanceofLong)
  38. {
  39. editor.putLong(key,(Long)object);
  40. }else
  41. {
  42. editor.putString(key,object.toString());
  43. }
  44. SharedPreferencesCompat.apply(editor);
  45. }
  46. /**
  47. *得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
  48. *
  49. *@paramcontext
  50. *@paramkey
  51. *@paramdefaultObject
  52. *@return
  53. */
  54. publicstaticObjectget(Contextcontext,Stringkey,ObjectdefaultObject)
  55. {
  56. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  57. Context.MODE_PRIVATE);
  58. if(defaultObjectinstanceofString)
  59. {
  60. returnsp.getString(key,(String)defaultObject);
  61. }elseif(defaultObjectinstanceofInteger)
  62. {
  63. returnsp.getInt(key,(Integer)defaultObject);
  64. }elseif(defaultObjectinstanceofBoolean)
  65. {
  66. returnsp.getBoolean(key,(Boolean)defaultObject);
  67. }elseif(defaultObjectinstanceofFloat)
  68. {
  69. returnsp.getFloat(key,(Float)defaultObject);
  70. }elseif(defaultObjectinstanceofLong)
  71. {
  72. returnsp.getLong(key,(Long)defaultObject);
  73. }
  74. returnnull;
  75. }
  76. /**
  77. *移除某个key值已经对应的值
  78. *@paramcontext
  79. *@paramkey
  80. */
  81. publicstaticvoidremove(Contextcontext,Stringkey)
  82. {
  83. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  84. Context.MODE_PRIVATE);
  85. SharedPreferences.Editoreditor=sp.edit();
  86. editor.remove(key);
  87. SharedPreferencesCompat.apply(editor);
  88. }
  89. /**
  90. *清除所有数据
  91. *@paramcontext
  92. */
  93. publicstaticvoidclear(Contextcontext)
  94. {
  95. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  96. Context.MODE_PRIVATE);
  97. SharedPreferences.Editoreditor=sp.edit();
  98. editor.clear();
  99. SharedPreferencesCompat.apply(editor);
  100. }
  101. /**
  102. *查询某个key是否已经存在
  103. *@paramcontext
  104. *@paramkey
  105. *@return
  106. */
  107. publicstaticbooleancontains(Contextcontext,Stringkey)
  108. {
  109. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  110. Context.MODE_PRIVATE);
  111. returnsp.contains(key);
  112. }
  113. /**
  114. *返回所有的键值对
  115. *
  116. *@paramcontext
  117. *@return
  118. */
  119. publicstaticMap<String,?>getAll(Contextcontext)
  120. {
  121. SharedPreferencessp=context.getSharedPreferences(FILE_NAME,
  122. Context.MODE_PRIVATE);
  123. returnsp.getAll();
  124. }
  125. /**
  126. *创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
  127. *
  128. *@authorzhy
  129. *
  130. */
  131. privatestaticclassSharedPreferencesCompat
  132. {
  133. privatestaticfinalMethodsApplyMethod=findApplyMethod();
  134. /**
  135. *反射查找apply的方法
  136. *
  137. *@return
  138. */
  139. @SuppressWarnings({"unchecked","rawtypes"})
  140. privatestaticMethodfindApplyMethod()
  141. {
  142. try
  143. {
  144. Classclz=SharedPreferences.Editor.class;
  145. returnclz.getMethod("apply");
  146. }catch(NoSuchMethodExceptione)
  147. {
  148. }
  149. returnnull;
  150. }
  151. /**
  152. *如果找到则使用apply执行,否则使用commit
  153. *
  154. *@parameditor
  155. */
  156. publicstaticvoidapply(SharedPreferences.Editoreditor)
  157. {
  158. try
  159. {
  160. if(sApplyMethod!=null)
  161. {
  162. sApplyMethod.invoke(editor);
  163. return;
  164. }
  165. }catch(IllegalArgumentExceptione)
  166. {
  167. }catch(IllegalAccessExceptione)
  168. {
  169. }catch(InvocationTargetExceptione)
  170. {
  171. }
  172. editor.commit();
  173. }
  174. }
  175. }

对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;

注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit

首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;

所以我们使用apply进行替代,apply异步的进行写入;

但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;

SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~

4、单位转换类DensityUtils
  1. packagecom.zhy.utils;
  2. importandroid.content.Context;
  3. importandroid.util.TypedValue;
  4. /**
  5. *常用单位转换的辅助类
  6. *
  7. *
  8. *
  9. */
  10. publicclassDensityUtils
  11. {
  12. privateDensityUtils()
  13. {
  14. /*cannotbeinstantiated*/
  15. thrownewUnsupportedOperationException("cannotbeinstantiated");
  16. }
  17. /**
  18. *dp转px
  19. *
  20. *@paramcontext
  21. *@paramval
  22. *@return
  23. */
  24. publicstaticintdp2px(Contextcontext,floatdpVal)
  25. {
  26. return(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
  27. dpVal,context.getResources().getDisplayMetrics());
  28. }
  29. /**
  30. *sp转px
  31. *
  32. *@paramcontext
  33. *@paramval
  34. *@return
  35. */
  36. publicstaticintsp2px(Contextcontext,floatspVal)
  37. {
  38. return(int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
  39. spVal,context.getResources().getDisplayMetrics());
  40. }
  41. /**
  42. *px转dp
  43. *
  44. *@paramcontext
  45. *@parampxVal
  46. *@return
  47. */
  48. publicstaticfloatpx2dp(Contextcontext,floatpxVal)
  49. {
  50. finalfloatscale=context.getResources().getDisplayMetrics().density;
  51. return(pxVal/scale);
  52. }
  53. /**
  54. *px转sp
  55. *
  56. *@paramfontScale
  57. *@parampxVal
  58. *@return
  59. */
  60. publicstaticfloatpx2sp(Contextcontext,floatpxVal)
  61. {
  62. return(pxVal/context.getResources().getDisplayMetrics().scaledDensity);
  63. }
  64. }
5、SD卡相关辅助类SDCardUtils
  1. packagecom.zhy.utils;
  2. importjava.io.File;
  3. importandroid.os.Environment;
  4. importandroid.os.StatFs;
  5. /**
  6. *SD卡相关的辅助类
  7. *
  8. *
  9. *
  10. */
  11. publicclassSDCardUtils
  12. {
  13. privateSDCardUtils()
  14. {
  15. /*cannotbeinstantiated*/
  16. thrownewUnsupportedOperationException("cannotbeinstantiated");
  17. }
  18. /**
  19. *判断SDCard是否可用
  20. *
  21. *@return
  22. */
  23. publicstaticbooleanisSDCardEnable()
  24. {
  25. returnEnvironment.getExternalStorageState().equals(
  26. Environment.MEDIA_MOUNTED);
  27. }
  28. /**
  29. *获取SD卡路径
  30. *
  31. *@return
  32. */
  33. publicstaticStringgetSDCardPath()
  34. {
  35. returnEnvironment.getExternalStorageDirectory().getAbsolutePath()
  36. +File.separator;
  37. }
  38. /**
  39. *获取SD卡的剩余容量单位byte
  40. *
  41. *@return
  42. */
  43. publicstaticlonggetSDCardAllSize()
  44. {
  45. if(isSDCardEnable())
  46. {
  47. StatFsstat=newStatFs(getSDCardPath());
  48. //获取空闲的数据块的数量
  49. longavailableBlocks=(long)stat.getAvailableBlocks()-4;
  50. //获取单个数据块的大小(byte)
  51. longfreeBlocks=stat.getAvailableBlocks();
  52. returnfreeBlocks*availableBlocks;
  53. }
  54. return0;
  55. }
  56. /**
  57. *获取指定路径所在空间的剩余可用容量字节数,单位byte
  58. *
  59. *@paramfilePath
  60. *@return容量字节SDCard可用空间,内部存储可用空间
  61. */
  62. publicstaticlonggetFreeBytes(StringfilePath)
  63. {
  64. //如果是sd卡的下的路径,则获取sd卡可用容量
  65. if(filePath.startsWith(getSDCardPath()))
  66. {
  67. filePath=getSDCardPath();
  68. }else
  69. {//如果是内部存储的路径,则获取内存存储的可用容量
  70. filePath=Environment.getDataDirectory().getAbsolutePath();
  71. }
  72. StatFsstat=newStatFs(filePath);
  73. longavailableBlocks=(long)stat.getAvailableBlocks()-4;
  74. returnstat.getBlockSize()*availableBlocks;
  75. }
  76. /**
  77. *获取系统存储路径
  78. *
  79. *@return
  80. */
  81. publicstaticStringgetRootDirectoryPath()
  82. {
  83. returnEnvironment.getRootDirectory().getAbsolutePath();
  84. }
  85. }
6、屏幕相关辅助类ScreenUtils
  1. packagecom.zhy.utils;
  2. importandroid.app.Activity;
  3. importandroid.content.Context;
  4. importandroid.graphics.Bitmap;
  5. importandroid.graphics.Rect;
  6. importandroid.util.DisplayMetrics;
  7. importandroid.view.View;
  8. importandroid.view.WindowManager;
  9. /**
  10. *获得屏幕相关的辅助类
  11. *
  12. *
  13. *
  14. */
  15. publicclassScreenUtils
  16. {
  17. privateScreenUtils()
  18. {
  19. /*cannotbeinstantiated*/
  20. thrownewUnsupportedOperationException("cannotbeinstantiated");
  21. }
  22. /**
  23. *获得屏幕高度
  24. *
  25. *@paramcontext
  26. *@return
  27. */
  28. publicstaticintgetScreenWidth(Contextcontext)
  29. {
  30. WindowManagerwm=(WindowManager)context
  31. .getSystemService(Context.WINDOW_SERVICE);
  32. DisplayMetricsoutMetrics=newDisplayMetrics();
  33. wm.getDefaultDisplay().getMetrics(outMetrics);
  34. returnoutMetrics.widthPixels;
  35. }
  36. /**
  37. *获得屏幕宽度
  38. *
  39. *@paramcontext
  40. *@return
  41. */
  42. publicstaticintgetScreenHeight(Contextcontext)
  43. {
  44. WindowManagerwm=(WindowManager)context
  45. .getSystemService(Context.WINDOW_SERVICE);
  46. DisplayMetricsoutMetrics=newDisplayMetrics();
  47. wm.getDefaultDisplay().getMetrics(outMetrics);
  48. returnoutMetrics.heightPixels;
  49. }
  50. /**
  51. *获得状态栏的高度
  52. *
  53. *@paramcontext
  54. *@return
  55. */
  56. publicstaticintgetStatusHeight(Contextcontext)
  57. {
  58. intstatusHeight=-1;
  59. try
  60. {
  61. Class<?>clazz=Class.forName("com.android.internal.R$dimen");
  62. Objectobject=clazz.newInstance();
  63. intheight=Integer.parseInt(clazz.getField("status_bar_height")
  64. .get(object).toString());
  65. statusHeight=context.getResources().getDimensionPixelSize(height);
  66. }catch(Exceptione)
  67. {
  68. e.printStackTrace();
  69. }
  70. returnstatusHeight;
  71. }
  72. /**
  73. *获取当前屏幕截图,包含状态栏
  74. *
  75. *@paramactivity
  76. *@return
  77. */
  78. publicstaticBitmapsnapShotWithStatusBar(Activityactivity)
  79. {
  80. Viewview=activity.getWindow().getDecorView();
  81. view.setDrawingCacheEnabled(true);
  82. view.buildDrawingCache();
  83. Bitmapbmp=view.getDrawingCache();
  84. intwidth=getScreenWidth(activity);
  85. intheight=getScreenHeight(activity);
  86. Bitmapbp=null;
  87. bp=Bitmap.createBitmap(bmp,0,0,width,height);
  88. view.destroyDrawingCache();
  89. returnbp;
  90. }
  91. /**
  92. *获取当前屏幕截图,不包含状态栏
  93. *
  94. *@paramactivity
  95. *@return
  96. */
  97. publicstaticBitmapsnapShotWithoutStatusBar(Activityactivity)
  98. {
  99. Viewview=activity.getWindow().getDecorView();
  100. view.setDrawingCacheEnabled(true);
  101. view.buildDrawingCache();
  102. Bitmapbmp=view.getDrawingCache();
  103. Rectframe=newRect();
  104. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
  105. intstatusBarHeight=frame.top;
  106. intwidth=getScreenWidth(activity);
  107. intheight=getScreenHeight(activity);
  108. Bitmapbp=null;
  109. bp=Bitmap.createBitmap(bmp,0,statusBarHeight,width,height
  110. -statusBarHeight);
  111. view.destroyDrawingCache();
  112. returnbp;
  113. }
  114. }
7、App相关辅助类
  1. packagecom.zhy.utils;
  2. importandroid.content.Context;
  3. importandroid.content.pm.PackageInfo;
  4. importandroid.content.pm.PackageManager;
  5. importandroid.content.pm.PackageManager.NameNotFoundException;
  6. /**
  7. *跟App相关的辅助类
  8. *
  9. *
  10. *
  11. */
  12. publicclassAppUtils
  13. {
  14. privateAppUtils()
  15. {
  16. /*cannotbeinstantiated*/
  17. thrownewUnsupportedOperationException("cannotbeinstantiated");
  18. }
  19. /**
  20. *获取应用程序名称
  21. */
  22. publicstaticStringgetAppName(Contextcontext)
  23. {
  24. try
  25. {
  26. PackageManagerpackageManager=context.getPackageManager();
  27. PackageInfopackageInfo=packageManager.getPackageInfo(
  28. context.getPackageName(),0);
  29. intlabelRes=packageInfo.applicationInfo.labelRes;
  30. returncontext.getResources().getString(labelRes);
  31. }catch(NameNotFoundExceptione)
  32. {
  33. e.printStackTrace();
  34. }
  35. returnnull;
  36. }
  37. /**
  38. *[获取应用程序版本名称信息]
  39. *
  40. *@paramcontext
  41. *@return当前应用的版本名称
  42. */
  43. publicstaticStringgetVersionName(Contextcontext)
  44. {
  45. try
  46. {
  47. PackageManagerpackageManager=context.getPackageManager();
  48. PackageInfopackageInfo=packageManager.getPackageInfo(
  49. context.getPackageName(),0);
  50. returnpackageInfo.versionName;
  51. }catch(NameNotFoundExceptione)
  52. {
  53. e.printStackTrace();
  54. }
  55. returnnull;
  56. }
  57. }
8、软键盘相关辅助类KeyBoardUtils
  1. packagecom.zhy.utils;
  2. importandroid.content.Context;
  3. importandroid.view.inputmethod.InputMethodManager;
  4. importandroid.widget.EditText;
  5. /**
  6. *打开或关闭软键盘
  7. *
  8. *@authorzhy
  9. *
  10. */
  11. publicclassKeyBoardUtils
  12. {
  13. /**
  14. *打卡软键盘
  15. *
  16. *@parammEditText
  17. *输入框
  18. *@parammContext
  19. *上下文
  20. */
  21. publicstaticvoidopenKeybord(EditTextmEditText,ContextmContext)
  22. {
  23. InputMethodManagerimm=(InputMethodManager)mContext
  24. .getSystemService(Context.INPUT_METHOD_SERVICE);
  25. imm.showSoftInput(mEditText,InputMethodManager.RESULT_SHOWN);
  26. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
  27. InputMethodManager.HIDE_IMPLICIT_ONLY);
  28. }
  29. /**
  30. *关闭软键盘
  31. *
  32. *@parammEditText
  33. *输入框
  34. *@parammContext
  35. *上下文
  36. */
  37. publicstaticvoidcloseKeybord(EditTextmEditText,ContextmContext)
  38. {
  39. InputMethodManagerimm=(InputMethodManager)mContext
  40. .getSystemService(Context.INPUT_METHOD_SERVICE);
  41. imm.hideSoftInputFromWindow(mEditText.getWindowToken(),0);
  42. }
  43. }
9、网络相关辅助类NetUtils
  1. packagecom.zhy.utils;
  2. importandroid.app.Activity;
  3. importandroid.content.ComponentName;
  4. importandroid.content.Context;
  5. importandroid.content.Intent;
  6. importandroid.net.ConnectivityManager;
  7. importandroid.net.NetworkInfo;
  8. /**
  9. *跟网络相关的工具类
  10. *
  11. *
  12. *
  13. */
  14. publicclassNetUtils
  15. {
  16. privateNetUtils()
  17. {
  18. /*cannotbeinstantiated*/
  19. thrownewUnsupportedOperationException("cannotbeinstantiated");
  20. }
  21. /**
  22. *判断网络是否连接
  23. *
  24. *@paramcontext
  25. *@return
  26. */
  27. publicstaticbooleanisConnected(Contextcontext)
  28. {
  29. ConnectivityManagerconnectivity=(ConnectivityManager)context
  30. .getSystemService(Context.CONNECTIVITY_SERVICE);
  31. if(null!=connectivity)
  32. {
  33. NetworkInfoinfo=connectivity.getActiveNetworkInfo();
  34. if(null!=info&&info.isConnected())
  35. {
  36. if(info.getState()==NetworkInfo.State.CONNECTED)
  37. {
  38. returntrue;
  39. }
  40. }
  41. }
  42. returnfalse;
  43. }
  44. /**
  45. *判断是否是wifi连接
  46. */
  47. publicstaticbooleanisWifi(Contextcontext)
  48. {
  49. ConnectivityManagercm=(ConnectivityManager)context
  50. .getSystemService(Context.CONNECTIVITY_SERVICE);
  51. if(cm==null)
  52. returnfalse;
  53. returncm.getActiveNetworkInfo().getType()==ConnectivityManager.TYPE_WIFI;
  54. }
  55. /**
  56. *打开网络设置界面
  57. */
  58. publicstaticvoidopenSetting(Activityactivity)
  59. {
  60. Intentintent=newIntent("/");
  61. ComponentNamecm=newComponentName("com.android.settings",
  62. "com.android.settings.WirelessSettings");
  63. intent.setComponent(cm);
  64. intent.setAction("android.intent.action.VIEW");
  65. activity.startActivityForResult(intent,0);
  66. }
  67. }
10、Http相关辅助类HttpUtils
  1. packagecom.zhy.utils;
  2. importjava.io.BufferedReader;
  3. importjava.io.ByteArrayOutputStream;
  4. importjava.io.IOException;
  5. importjava.io.InputStream;
  6. importjava.io.InputStreamReader;
  7. importjava.io.PrintWriter;
  8. importjava.net.HttpURLConnection;
  9. importjava.net.URL;
  10. /**
  11. *Http请求的工具类
  12. *
  13. *@authorzhy
  14. *
  15. */
  16. publicclassHttpUtils
  17. {
  18. privatestaticfinalintTIMEOUT_IN_MILLIONS=5000;
  19. publicinterfaceCallBack
  20. {
  21. voidonRequestComplete(Stringresult);
  22. }
  23. /**
  24. *异步的Get请求
  25. *
  26. *@paramurlStr
  27. *@paramcallBack
  28. */
  29. publicstaticvoiddoGetAsyn(finalStringurlStr,finalCallBackcallBack)
  30. {
  31. newThread()
  32. {
  33. publicvoidrun()
  34. {
  35. try
  36. {
  37. Stringresult=doGet(urlStr);
  38. if(callBack!=null)
  39. {
  40. callBack.onRequestComplete(result);
  41. }
  42. }catch(Exceptione)
  43. {
  44. e.printStackTrace();
  45. }
  46. };
  47. }.start();
  48. }
  49. /**
  50. *异步的Post请求
  51. *@paramurlStr
  52. *@paramparams
  53. *@paramcallBack
  54. *@throwsException
  55. */
  56. publicstaticvoiddoPostAsyn(finalStringurlStr,finalStringparams,
  57. finalCallBackcallBack)throwsException
  58. {
  59. newThread()
  60. {
  61. publicvoidrun()
  62. {
  63. try
  64. {
  65. Stringresult=doPost(urlStr,params);
  66. if(callBack!=null)
  67. {
  68. callBack.onRequestComplete(result);
  69. }
  70. }catch(Exceptione)
  71. {
  72. e.printStackTrace();
  73. }
  74. };
  75. }.start();
  76. }
  77. /**
  78. *Get请求,获得返回数据
  79. *
  80. *@paramurlStr
  81. *@return
  82. *@throwsException
  83. */
  84. publicstaticStringdoGet(StringurlStr)
  85. {
  86. URLurl=null;
  87. HttpURLConnectionconn=null;
  88. InputStreamis=null;
  89. ByteArrayOutputStreambaos=null;
  90. try
  91. {
  92. url=newURL(urlStr);
  93. conn=(HttpURLConnection)url.openConnection();
  94. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
  95. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
  96. conn.setRequestMethod("GET");
  97. conn.setRequestProperty("accept","*/*");
  98. conn.setRequestProperty("connection","Keep-Alive");
  99. if(conn.getResponseCode()==200)
  100. {
  101. is=conn.getInputStream();
  102. baos=newByteArrayOutputStream();
  103. intlen=-1;
  104. byte[]buf=newbyte[128];
  105. while((len=is.read(buf))!=-1)
  106. {
  107. baos.write(buf,0,len);
  108. }
  109. baos.flush();
  110. returnbaos.toString();
  111. }else
  112. {
  113. thrownewRuntimeException("responseCodeisnot200...");
  114. }
  115. }catch(Exceptione)
  116. {
  117. e.printStackTrace();
  118. }finally
  119. {
  120. try
  121. {
  122. if(is!=null)
  123. is.close();
  124. }catch(IOExceptione)
  125. {
  126. }
  127. try
  128. {
  129. if(baos!=null)
  130. baos.close();
  131. }catch(IOExceptione)
  132. {
  133. }
  134. conn.disconnect();
  135. }
  136. returnnull;
  137. }
  138. /**
  139. *向指定URL发送POST方法的请求
  140. *
  141. *@paramurl
  142. *发送请求的URL
  143. *@paramparam
  144. *请求参数,请求参数应该是name1=value1&name2=value2的形式。
  145. *@return所代表远程资源的响应结果
  146. *@throwsException
  147. */
  148. publicstaticStringdoPost(Stringurl,Stringparam)
  149. {
  150. PrintWriterout=null;
  151. BufferedReaderin=null;
  152. Stringresult="";
  153. try
  154. {
  155. URLrealUrl=newURL(url);
  156. //打开和URL之间的连接
  157. HttpURLConnectionconn=(HttpURLConnection)realUrl
  158. .openConnection();
  159. //设置通用的请求属性
  160. conn.setRequestProperty("accept","*/*");
  161. conn.setRequestProperty("connection","Keep-Alive");
  162. conn.setRequestMethod("POST");
  163. conn.setRequestProperty("Content-Type",
  164. "application/x-www-form-urlencoded");
  165. conn.setRequestProperty("charset","utf-8");
  166. conn.setUseCaches(false);
  167. //发送POST请求必须设置如下两行
  168. conn.setDoOutput(true);
  169. conn.setDoInput(true);
  170. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
  171. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
  172. if(param!=null&&!param.trim().equals(""))
  173. {
  174. //获取URLConnection对象对应的输出流
  175. out=newPrintWriter(conn.getOutputStream());
  176. //发送请求参数
  177. out.print(param);
  178. //flush输出流的缓冲
  179. out.flush();
  180. }
  181. //定义BufferedReader输入流来读取URL的响应
  182. in=newBufferedReader(
  183. newInputStreamReader(conn.getInputStream()));
  184. Stringline;
  185. while((line=in.readLine())!=null)
  186. {
  187. result+=line;
  188. }
  189. }catch(Exceptione)
  190. {
  191. e.printStackTrace();
  192. }
  193. //使用finally块来关闭输出流、输入流
  194. finally
  195. {
  196. try
  197. {
  198. if(out!=null)
  199. {
  200. out.close();
  201. }
  202. if(in!=null)
  203. {
  204. in.close();
  205. }
  206. }catch(IOExceptionex)
  207. {
  208. ex.printStackTrace();
  209. }
  210. }
  211. returnresult;
  212. }
  213. }

如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~

源码点击下载

免责声明:文章转载自《Android快速开发系列 10个常用工具类》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF中ToolTip的自定义Failed to close server connection after message failures; nested exception is javax.mail.MessagingException: Can't send command to SMTP host下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

IDEA 这样设置,好看到爆炸!!!

首先我们来看下IDEA默认设置,虽然不丑,但就是太单调,千篇一律。那今天IDEA所有设置,小黑哥这里都总结好,大家可以看下这张思维导图。那IDEA自带了两款主题,一款是浅色主题,一款是深色主题。图标IDEA默认自带了一下文件图标,比如这个pom就会显示下面这个一样。背景图IDEA默认情况背景是纯色,比如黑色,比较单调,这里我们可以设置一下背景图。...

kafka查询命令---Linux

Kafka版本:Kafka_2.12-2.1.1kafka _端口默认为9092,zk_端口默认值2181查看topicbin/Kafka主题。sh--zookeperzk_ip:zk_Port--list查看groupbin/kafka用户组。sh--引导服务器kafka-ip:kafka_Port--list查看主题下的基础...

Delphi国内优秀网站及开源项目

它被设计为与Delphi2010或更高版本一起使用,它使用了旧版Delphi中没有的语言/RTL功能。https://github.com/VSoftTechnologies/DUnitXDelphiIDEColorizerDelphiIDEColorizer是一个插件,它可以使RADStudioIDE的工作空间https://github.com/RRUZ...

git 系列4(文件提交历史)

1查看文件提交历史记录。如果gitlog命令默认不使用任何参数,gitlog将提交时间中列出的所有更新,最新的更新位于顶部;每次更新都有一个SHA-1校验和、作者的姓名和电子邮件地址以及提交时间。提交说明通过在末尾缩进一段来显示——Stat显示每次更新的文件修改统计信息。您还可以给出几个搜索条件并列出符合条件的提交——提交者只显示与指定提交者相关的提交。...

配置nginx

aNULL:!MD5:!...

selenium自动化之鼠标操作

,selenium为我们提供了一个处理此类事件的类——ActionChains。ActionChains可以模拟鼠标操作,例如单击、双击、右键单击、拖动等。鼠标移动时演示页面的截图:demo1.使用鼠标移动到WriteonOver按钮的顶部。python脚本如下:读取鼠标移动代码,首先定义浏览器驱动程序,最大化窗口,打开测试页面URL,定位到测试按钮顶部,定...