整理出10个基本每个项目中都会使用的工具类,用于快速开发。
1、日志工具类L.java
1. package com.zhy.utils;
2.
3. import android.util.Log;
4.
5. /**
6. * Log统一管理类
7. *
8. *
9. *
10. */
11. public class L
12. {
13.
14. private L()
15. {
16. /* cannot be instantiated */
17. throw new UnsupportedOperationException("cannot be instantiated");
18. }
19.
20. public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化
21. private static final String TAG = "way";
22.
23. // 下面四个是默认tag的函数
24. public static void i(String msg)
25. {
26. if (isDebug)
27. Log.i(TAG, msg);
28. }
29.
30. public static void d(String msg)
31. {
32. if (isDebug)
33. Log.d(TAG, msg);
34. }
35.
36. public static void e(String msg)
37. {
38. if (isDebug)
39. Log.e(TAG, msg);
40. }
41.
42. public static void v(String msg)
43. {
44. if (isDebug)
45. Log.v(TAG, msg);
46. }
47.
48. // 下面是传入自定义tag的函数
49. public static void i(String tag, String msg)
50. {
51. if (isDebug)
52. Log.i(tag, msg);
53. }
54.
55. public static void d(String tag, String msg)
56. {
57. if (isDebug)
58. Log.i(tag, msg);
59. }
60.
61. public static void e(String tag, String msg)
62. {
63. if (isDebug)
64. Log.i(tag, msg);
65. }
66.
67. public static void v(String tag, String msg)
68. {
69. if (isDebug)
70. Log.i(tag, msg);
71. }
72. }
网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~
2、Toast统一管理类
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.widget.Toast;
5.
6. /**
7. * Toast统一管理类
8. *
9. */
10. public class T
11. {
12.
13. private T()
14. {
15. /* cannot be instantiated */
16. throw new UnsupportedOperationException("cannot be instantiated");
17. }
18.
19. public static boolean isShow = true;
20.
21. /**
22. * 短时间显示Toast
23. *
24. * @param context
25. * @param message
26. */
27. public static void showShort(Context context, CharSequence message)
28. {
29. if (isShow)
30. Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
31. }
32.
33. /**
34. * 短时间显示Toast
35. *
36. * @param context
37. * @param message
38. */
39. public static void showShort(Context context, int message)
40. {
41. if (isShow)
42. Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
43. }
44.
45. /**
46. * 长时间显示Toast
47. *
48. * @param context
49. * @param message
50. */
51. public static void showLong(Context context, CharSequence message)
52. {
53. if (isShow)
54. Toast.makeText(context, message, Toast.LENGTH_LONG).show();
55. }
56.
57. /**
58. * 长时间显示Toast
59. *
60. * @param context
61. * @param message
62. */
63. public static void showLong(Context context, int message)
64. {
65. if (isShow)
66. Toast.makeText(context, message, Toast.LENGTH_LONG).show();
67. }
68.
69. /**
70. * 自定义显示Toast时间
71. *
72. * @param context
73. * @param message
74. * @param duration
75. */
76. public static void show(Context context, CharSequence message, int duration)
77. {
78. if (isShow)
79. Toast.makeText(context, message, duration).show();
80. }
81.
82. /**
83. * 自定义显示Toast时间
84. *
85. * @param context
86. * @param message
87. * @param duration
88. */
89. public static void show(Context context, int message, int duration)
90. {
91. if (isShow)
92. Toast.makeText(context, message, duration).show();
93. }
94.
95. }
也是非常简单的一个封装,能省则省了~~
3、SharedPreferences封装类SPUtils
1. package com.zhy.utils;
2.
3. import java.lang.reflect.InvocationTargetException;
4. import java.lang.reflect.Method;
5. import java.util.Map;
6.
7. import android.content.Context;
8. import android.content.SharedPreferences;
9.
10. public class SPUtils
11. {
12. /**
13. * 保存在手机里面的文件名
14. */
15. public static final String FILE_NAME = "share_data";
16.
17. /**
18. * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
19. *
20. * @param context
21. * @param key
22. * @param object
23. */
24. public static void put(Context context, String key, Object object)
25. {
26.
27. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
28. Context.MODE_PRIVATE);
29. SharedPreferences.Editor editor = sp.edit();
30.
31. if (object instanceof String)
32. {
33. editor.putString(key, (String) object);
34. else if (object instanceof Integer)
35. {
36. editor.putInt(key, (Integer) object);
37. else if (object instanceof Boolean)
38. {
39. editor.putBoolean(key, (Boolean) object);
40. else if (object instanceof Float)
41. {
42. editor.putFloat(key, (Float) object);
43. else if (object instanceof Long)
44. {
45. editor.putLong(key, (Long) object);
46. else
47. {
48. editor.putString(key, object.toString());
49. }
50.
51. SharedPreferencesCompat.apply(editor);
52. }
53.
54. /**
55. * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
56. *
57. * @param context
58. * @param key
59. * @param defaultObject
60. * @return
61. */
62. public static Object get(Context context, String key, Object defaultObject)
63. {
64. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
65. Context.MODE_PRIVATE);
66.
67. if (defaultObject instanceof String)
68. {
69. return sp.getString(key, (String) defaultObject);
70. else if (defaultObject instanceof Integer)
71. {
72. return sp.getInt(key, (Integer) defaultObject);
73. else if (defaultObject instanceof Boolean)
74. {
75. return sp.getBoolean(key, (Boolean) defaultObject);
76. else if (defaultObject instanceof Float)
77. {
78. return sp.getFloat(key, (Float) defaultObject);
79. else if (defaultObject instanceof Long)
80. {
81. return sp.getLong(key, (Long) defaultObject);
82. }
83.
84. return null;
85. }
86.
87. /**
88. * 移除某个key值已经对应的值
89. * @param context
90. * @param key
91. */
92. public static void remove(Context context, String key)
93. {
94. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
95. Context.MODE_PRIVATE);
96. SharedPreferences.Editor editor = sp.edit();
97. editor.remove(key);
98. SharedPreferencesCompat.apply(editor);
99. }
100.
101. /**
102. * 清除所有数据
103. * @param context
104. */
105. public static void clear(Context context)
106. {
107. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
108. Context.MODE_PRIVATE);
109. SharedPreferences.Editor editor = sp.edit();
110. editor.clear();
111. SharedPreferencesCompat.apply(editor);
112. }
113.
114. /**
115. * 查询某个key是否已经存在
116. * @param context
117. * @param key
118. * @return
119. */
120. public static boolean contains(Context context, String key)
121. {
122. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
123. Context.MODE_PRIVATE);
124. return sp.contains(key);
125. }
126.
127. /**
128. * 返回所有的键值对
129. *
130. * @param context
131. * @return
132. */
133. public static Map<String, ?> getAll(Context context)
134. {
135. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
136. Context.MODE_PRIVATE);
137. return sp.getAll();
138. }
139.
140. /**
141. * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
142. *
143. * @author zhy
144. *
145. */
146. private static class SharedPreferencesCompat
147. {
148. private static final Method sApplyMethod = findApplyMethod();
149.
150. /**
151. * 反射查找apply的方法
152. *
153. * @return
154. */
155. @SuppressWarnings({ "unchecked", "rawtypes" })
156. private static Method findApplyMethod()
157. {
158. try
159. {
160. class;
161. return clz.getMethod("apply");
162. catch (NoSuchMethodException e)
163. {
164. }
165.
166. return null;
167. }
168.
169. /**
170. * 如果找到则使用apply执行,否则使用commit
171. *
172. * @param editor
173. */
174. public static void apply(SharedPreferences.Editor editor)
175. {
176. try
177. {
178. if (sApplyMethod != null)
179. {
180. sApplyMethod.invoke(editor);
181. return;
182. }
183. catch (IllegalArgumentException e)
184. {
185. catch (IllegalAccessException e)
186. {
187. catch (InvocationTargetException e)
188. {
189. }
190. editor.commit();
191. }
192. }
193.
194. }
对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;
注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit
首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;
所以我们使用apply进行替代,apply异步的进行写入;
但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;
SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~
4、单位转换类 DensityUtils
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.util.TypedValue;
5.
6. /**
7. * 常用单位转换的辅助类
8. *
9. *
10. *
11. */
12. public class DensityUtils
13. {
14. private DensityUtils()
15. {
16. /* cannot be instantiated */
17. throw new UnsupportedOperationException("cannot be instantiated");
18. }
19.
20. /**
21. * dp转px
22. *
23. * @param context
24. * @param val
25. * @return
26. */
27. public static int dp2px(Context context, float dpVal)
28. {
29. return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
30. dpVal, context.getResources().getDisplayMetrics());
31. }
32.
33. /**
34. * sp转px
35. *
36. * @param context
37. * @param val
38. * @return
39. */
40. public static int sp2px(Context context, float spVal)
41. {
42. return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
43. spVal, context.getResources().getDisplayMetrics());
44. }
45.
46. /**
47. * px转dp
48. *
49. * @param context
50. * @param pxVal
51. * @return
52. */
53. public static float px2dp(Context context, float pxVal)
54. {
55. final float scale = context.getResources().getDisplayMetrics().density;
56. return (pxVal / scale);
57. }
58.
59. /**
60. * px转sp
61. *
62. * @param fontScale
63. * @param pxVal
64. * @return
65. */
66. public static float px2sp(Context context, float pxVal)
67. {
68. return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
69. }
70.
71. }
5、SD卡相关辅助类 SDCardUtils
1. package com.zhy.utils;
2.
3. import java.io.File;
4.
5. import android.os.Environment;
6. import android.os.StatFs;
7.
8. /**
9. * SD卡相关的辅助类
10. *
11. *
12. *
13. */
14. public class SDCardUtils
15. {
16. private SDCardUtils()
17. {
18. /* cannot be instantiated */
19. throw new UnsupportedOperationException("cannot be instantiated");
20. }
21.
22. /**
23. * 判断SDCard是否可用
24. *
25. * @return
26. */
27. public static boolean isSDCardEnable()
28. {
29. return Environment.getExternalStorageState().equals(
30. Environment.MEDIA_MOUNTED);
31.
32. }
33.
34. /**
35. * 获取SD卡路径
36. *
37. * @return
38. */
39. public static String getSDCardPath()
40. {
41. return Environment.getExternalStorageDirectory().getAbsolutePath()
42. + File.separator;
43. }
44.
45. /**
46. * 获取SD卡的剩余容量 单位byte
47. *
48. * @return
49. */
50. public static long getSDCardAllSize()
51. {
52. if (isSDCardEnable())
53. {
54. new StatFs(getSDCardPath());
55. // 获取空闲的数据块的数量
56. long availableBlocks = (long) stat.getAvailableBlocks() - 4;
57. // 获取单个数据块的大小(byte)
58. long freeBlocks = stat.getAvailableBlocks();
59. return freeBlocks * availableBlocks;
60. }
61. return 0;
62. }
63.
64. /**
65. * 获取指定路径所在空间的剩余可用容量字节数,单位byte
66. *
67. * @param filePath
68. * @return 容量字节 SDCard可用空间,内部存储可用空间
69. */
70. public static long getFreeBytes(String filePath)
71. {
72. // 如果是sd卡的下的路径,则获取sd卡可用容量
73. if (filePath.startsWith(getSDCardPath()))
74. {
75. filePath = getSDCardPath();
76. else
77. // 如果是内部存储的路径,则获取内存存储的可用容量
78. filePath = Environment.getDataDirectory().getAbsolutePath();
79. }
80. new StatFs(filePath);
81. long availableBlocks = (long) stat.getAvailableBlocks() - 4;
82. return stat.getBlockSize() * availableBlocks;
83. }
84.
85. /**
86. * 获取系统存储路径
87. *
88. * @return
89. */
90. public static String getRootDirectoryPath()
91. {
92. return Environment.getRootDirectory().getAbsolutePath();
93. }
94.
95.
96. }
6、屏幕相关辅助类 ScreenUtils
1. package com.zhy.utils;
2.
3. import android.app.Activity;
4. import android.content.Context;
5. import android.graphics.Bitmap;
6. import android.graphics.Rect;
7. import android.util.DisplayMetrics;
8. import android.view.View;
9. import android.view.WindowManager;
10.
11. /**
12. * 获得屏幕相关的辅助类
13. *
14. *
15. *
16. */
17. public class ScreenUtils
18. {
19. private ScreenUtils()
20. {
21. /* cannot be instantiated */
22. throw new UnsupportedOperationException("cannot be instantiated");
23. }
24.
25. /**
26. * 获得屏幕高度
27. *
28. * @param context
29. * @return
30. */
31. public static int getScreenWidth(Context context)
32. {
33. WindowManager wm = (WindowManager) context
34. .getSystemService(Context.WINDOW_SERVICE);
35. new DisplayMetrics();
36. wm.getDefaultDisplay().getMetrics(outMetrics);
37. return outMetrics.widthPixels;
38. }
39.
40. /**
41. * 获得屏幕宽度
42. *
43. * @param context
44. * @return
45. */
46. public static int getScreenHeight(Context context)
47. {
48. WindowManager wm = (WindowManager) context
49. .getSystemService(Context.WINDOW_SERVICE);
50. new DisplayMetrics();
51. wm.getDefaultDisplay().getMetrics(outMetrics);
52. return outMetrics.heightPixels;
53. }
54.
55. /**
56. * 获得状态栏的高度
57. *
58. * @param context
59. * @return
60. */
61. public static int getStatusHeight(Context context)
62. {
63.
64. int statusHeight = -1;
65. try
66. {
67. "com.android.internal.R$dimen");
68. Object object = clazz.newInstance();
69. int height = Integer.parseInt(clazz.getField("status_bar_height")
70. .get(object).toString());
71. statusHeight = context.getResources().getDimensionPixelSize(height);
72. catch (Exception e)
73. {
74. e.printStackTrace();
75. }
76. return statusHeight;
77. }
78.
79. /**
80. * 获取当前屏幕截图,包含状态栏
81. *
82. * @param activity
83. * @return
84. */
85. public static Bitmap snapShotWithStatusBar(Activity activity)
86. {
87. View view = activity.getWindow().getDecorView();
88. true);
89. view.buildDrawingCache();
90. Bitmap bmp = view.getDrawingCache();
91. int width = getScreenWidth(activity);
92. int height = getScreenHeight(activity);
93. null;
94. 0, 0, width, height);
95. view.destroyDrawingCache();
96. return bp;
97.
98. }
99.
100. /**
101. * 获取当前屏幕截图,不包含状态栏
102. *
103. * @param activity
104. * @return
105. */
106. public static Bitmap snapShotWithoutStatusBar(Activity activity)
107. {
108. View view = activity.getWindow().getDecorView();
109. true);
110. view.buildDrawingCache();
111. Bitmap bmp = view.getDrawingCache();
112. new Rect();
113. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
114. int statusBarHeight = frame.top;
115.
116. int width = getScreenWidth(activity);
117. int height = getScreenHeight(activity);
118. null;
119. 0, statusBarHeight, width, height
120. - statusBarHeight);
121. view.destroyDrawingCache();
122. return bp;
123.
124. }
125.
126. }
7、App相关辅助类
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.content.pm.PackageInfo;
5. import android.content.pm.PackageManager;
6. import android.content.pm.PackageManager.NameNotFoundException;
7.
8. /**
9. * 跟App相关的辅助类
10. *
11. *
12. *
13. */
14. public class AppUtils
15. {
16.
17. private AppUtils()
18. {
19. /* cannot be instantiated */
20. throw new UnsupportedOperationException("cannot be instantiated");
21.
22. }
23.
24. /**
25. * 获取应用程序名称
26. */
27. public static String getAppName(Context context)
28. {
29. try
30. {
31. PackageManager packageManager = context.getPackageManager();
32. PackageInfo packageInfo = packageManager.getPackageInfo(
33. 0);
34. int labelRes = packageInfo.applicationInfo.labelRes;
35. return context.getResources().getString(labelRes);
36. catch (NameNotFoundException e)
37. {
38. e.printStackTrace();
39. }
40. return null;
41. }
42.
43. /**
44. * [获取应用程序版本名称信息]
45. *
46. * @param context
47. * @return 当前应用的版本名称
48. */
49. public static String getVersionName(Context context)
50. {
51. try
52. {
53. PackageManager packageManager = context.getPackageManager();
54. PackageInfo packageInfo = packageManager.getPackageInfo(
55. 0);
56. return packageInfo.versionName;
57.
58. catch (NameNotFoundException e)
59. {
60. e.printStackTrace();
61. }
62. return null;
63. }
64.
65. }
8、软键盘相关辅助类KeyBoardUtils
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.view.inputmethod.InputMethodManager;
5. import android.widget.EditText;
6.
7. /**
8. * 打开或关闭软键盘
9. *
10. * @author zhy
11. *
12. */
13. public class KeyBoardUtils
14. {
15. /**
16. * 打卡软键盘
17. *
18. * @param mEditText
19. * 输入框
20. * @param mContext
21. * 上下文
22. */
23. public static void openKeybord(EditText mEditText, Context mContext)
24. {
25. InputMethodManager imm = (InputMethodManager) mContext
26. .getSystemService(Context.INPUT_METHOD_SERVICE);
27. imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
28. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
29. InputMethodManager.HIDE_IMPLICIT_ONLY);
30. }
31.
32. /**
33. * 关闭软键盘
34. *
35. * @param mEditText
36. * 输入框
37. * @param mContext
38. * 上下文
39. */
40. public static void closeKeybord(EditText mEditText, Context mContext)
41. {
42. InputMethodManager imm = (InputMethodManager) mContext
43. .getSystemService(Context.INPUT_METHOD_SERVICE);
44.
45. 0);
46. }
47. }
9、网络相关辅助类 NetUtils
1. package com.zhy.utils;
2.
3. import android.app.Activity;
4. import android.content.ComponentName;
5. import android.content.Context;
6. import android.content.Intent;
7. import android.net.ConnectivityManager;
8. import android.net.NetworkInfo;
9.
10. /**
11. * 跟网络相关的工具类
12. *
13. *
14. *
15. */
16. public class NetUtils
17. {
18. private NetUtils()
19. {
20. /* cannot be instantiated */
21. throw new UnsupportedOperationException("cannot be instantiated");
22. }
23.
24. /**
25. * 判断网络是否连接
26. *
27. * @param context
28. * @return
29. */
30. public static boolean isConnected(Context context)
31. {
32.
33. ConnectivityManager connectivity = (ConnectivityManager) context
34. .getSystemService(Context.CONNECTIVITY_SERVICE);
35.
36. if (null != connectivity)
37. {
38.
39. NetworkInfo info = connectivity.getActiveNetworkInfo();
40. if (null != info && info.isConnected())
41. {
42. if (info.getState() == NetworkInfo.State.CONNECTED)
43. {
44. return true;
45. }
46. }
47. }
48. return false;
49. }
50.
51. /**
52. * 判断是否是wifi连接
53. */
54. public static boolean isWifi(Context context)
55. {
56. ConnectivityManager cm = (ConnectivityManager) context
57. .getSystemService(Context.CONNECTIVITY_SERVICE);
58.
59. if (cm == null)
60. return false;
61. return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
62.
63. }
64.
65. /**
66. * 打开网络设置界面
67. */
68. public static void openSetting(Activity activity)
69. {
70. new Intent("/");
71. new ComponentName("com.android.settings",
72. "com.android.settings.WirelessSettings");
73. intent.setComponent(cm);
74. "android.intent.action.VIEW");
75. 0);
76. }
77.
78. }
10、Http相关辅助类 HttpUtils
1. package com.zhy.utils;
2.
3. import java.io.BufferedReader;
4. import java.io.ByteArrayOutputStream;
5. import java.io.IOException;
6. import java.io.InputStream;
7. import java.io.InputStreamReader;
8. import java.io.PrintWriter;
9. import java.net.HttpURLConnection;
10. import java.net.URL;
11.
12. /**
13. * Http请求的工具类
14. *
15. * @author zhy
16. *
17. */
18. public class HttpUtils
19. {
20.
21. private static final int TIMEOUT_IN_MILLIONS = 5000;
22.
23. public interface CallBack
24. {
25. void onRequestComplete(String result);
26. }
27.
28.
29. /**
30. * 异步的Get请求
31. *
32. * @param urlStr
33. * @param callBack
34. */
35. public static void doGetAsyn(final String urlStr, final CallBack callBack)
36. {
37. new Thread()
38. {
39. public void run()
40. {
41. try
42. {
43. String result = doGet(urlStr);
44. if (callBack != null)
45. {
46. callBack.onRequestComplete(result);
47. }
48. catch (Exception e)
49. {
50. e.printStackTrace();
51. }
52.
53. };
54. }.start();
55. }
56.
57. /**
58. * 异步的Post请求
59. * @param urlStr
60. * @param params
61. * @param callBack
62. * @throws Exception
63. */
64. public static void doPostAsyn(final String urlStr, final String params,
65. final CallBack callBack) throws Exception
66. {
67. new Thread()
68. {
69. public void run()
70. {
71. try
72. {
73. String result = doPost(urlStr, params);
74. if (callBack != null)
75. {
76. callBack.onRequestComplete(result);
77. }
78. catch (Exception e)
79. {
80. e.printStackTrace();
81. }
82.
83. };
84. }.start();
85.
86. }
87.
88. /**
89. * Get请求,获得返回数据
90. *
91. * @param urlStr
92. * @return
93. * @throws Exception
94. */
95. public static String doGet(String urlStr)
96. {
97. null;
98. null;
99. null;
100. null;
101. try
102. {
103. new URL(urlStr);
104. conn = (HttpURLConnection) url.openConnection();
105. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
106. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
107. "GET");
108. "accept", "*/*");
109. "connection", "Keep-Alive");
110. if (conn.getResponseCode() == 200)
111. {
112. is = conn.getInputStream();
113. new ByteArrayOutputStream();
114. int len = -1;
115. byte[] buf = new byte[128];
116.
117. while ((len = is.read(buf)) != -1)
118. {
119. 0, len);
120. }
121. baos.flush();
122. return baos.toString();
123. else
124. {
125. throw new RuntimeException(" responseCode is not 200 ... ");
126. }
127.
128. catch (Exception e)
129. {
130. e.printStackTrace();
131. finally
132. {
133. try
134. {
135. if (is != null)
136. is.close();
137. catch (IOException e)
138. {
139. }
140. try
141. {
142. if (baos != null)
143. baos.close();
144. catch (IOException e)
145. {
146. }
147. conn.disconnect();
148. }
149.
150. return null ;
151.
152. }
153.
154. /**
155. * 向指定 URL 发送POST方法的请求
156. *
157. @param url
158. * 发送请求的 URL
159. @param param
160. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
161. @return 所代表远程资源的响应结果
162. @throws Exception
163. */
164. public static String doPost(String url, String param)
165. {
166. null;
167. null;
168. "";
169. try
170. {
171. new URL(url);
172. // 打开和URL之间的连接
173. HttpURLConnection conn = (HttpURLConnection) realUrl
174. .openConnection();
175. // 设置通用的请求属性
176. "accept", "*/*");
177. "connection", "Keep-Alive");
178. "POST");
179. "Content-Type",
180. "application/x-www-form-urlencoded");
181. "charset", "utf-8");
182. false);
183. // 发送POST请求必须设置如下两行
184. true);
185. true);
186. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
187. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
188.
189. if (param != null && !param.trim().equals(""))
190. {
191. // 获取URLConnection对象对应的输出流
192. new PrintWriter(conn.getOutputStream());
193. // 发送请求参数
194. out.print(param);
195. // flush输出流的缓冲
196. out.flush();
197. }
198. // 定义BufferedReader输入流来读取URL的响应
199. new BufferedReader(
200. new InputStreamReader(conn.getInputStream()));
201. String line;
202. while ((line = in.readLine()) != null)
203. {
204. result += line;
205. }
206. catch (Exception e)
207. {
208. e.printStackTrace();
209. }
210. // 使用finally块来关闭输出流、输入流
211. finally
212. {
213. try
214. {
215. if (out != null)
216. {
217. out.close();
218. }
219. if (in != null)
220. {
221. in.close();
222. }
223. catch (IOException ex)
224. {
225. ex.printStackTrace();
226. }
227. }
228. return result;
229. }
230. }
/**
* 获取应用程序名称
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* [获取应用程序版本名称信息]
*
* @param context
* @return 当前应用的版本名称
*/
public static String getVersionName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**判断是否为中文*/
public static boolean isZh(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言",language);
if (language.endsWith("zh"))
return true;
else
return false;
}
/**获取当前语言*/
public static String language(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言是",language);
return language;
}
}
如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~
源码点击下载
整理出10个基本每个项目中都会使用的工具类,用于快速开发。
1、日志工具类L.java
1. package com.zhy.utils;
2.
3. import android.util.Log;
4.
5. /**
6. * Log统一管理类
7. *
8. *
9. *
10. */
11. public class L
12. {
13.
14. private L()
15. {
16. /* cannot be instantiated */
17. throw new UnsupportedOperationException("cannot be instantiated");
18. }
19.
20. public static boolean isDebug = true;// 是否需要打印bug,可以在application的onCreate函数里面初始化
21. private static final String TAG = "way";
22.
23. // 下面四个是默认tag的函数
24. public static void i(String msg)
25. {
26. if (isDebug)
27. Log.i(TAG, msg);
28. }
29.
30. public static void d(String msg)
31. {
32. if (isDebug)
33. Log.d(TAG, msg);
34. }
35.
36. public static void e(String msg)
37. {
38. if (isDebug)
39. Log.e(TAG, msg);
40. }
41.
42. public static void v(String msg)
43. {
44. if (isDebug)
45. Log.v(TAG, msg);
46. }
47.
48. // 下面是传入自定义tag的函数
49. public static void i(String tag, String msg)
50. {
51. if (isDebug)
52. Log.i(tag, msg);
53. }
54.
55. public static void d(String tag, String msg)
56. {
57. if (isDebug)
58. Log.i(tag, msg);
59. }
60.
61. public static void e(String tag, String msg)
62. {
63. if (isDebug)
64. Log.i(tag, msg);
65. }
66.
67. public static void v(String tag, String msg)
68. {
69. if (isDebug)
70. Log.i(tag, msg);
71. }
72. }
网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~
2、Toast统一管理类
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.widget.Toast;
5.
6. /**
7. * Toast统一管理类
8. *
9. */
10. public class T
11. {
12.
13. private T()
14. {
15. /* cannot be instantiated */
16. throw new UnsupportedOperationException("cannot be instantiated");
17. }
18.
19. public static boolean isShow = true;
20.
21. /**
22. * 短时间显示Toast
23. *
24. * @param context
25. * @param message
26. */
27. public static void showShort(Context context, CharSequence message)
28. {
29. if (isShow)
30. Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
31. }
32.
33. /**
34. * 短时间显示Toast
35. *
36. * @param context
37. * @param message
38. */
39. public static void showShort(Context context, int message)
40. {
41. if (isShow)
42. Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
43. }
44.
45. /**
46. * 长时间显示Toast
47. *
48. * @param context
49. * @param message
50. */
51. public static void showLong(Context context, CharSequence message)
52. {
53. if (isShow)
54. Toast.makeText(context, message, Toast.LENGTH_LONG).show();
55. }
56.
57. /**
58. * 长时间显示Toast
59. *
60. * @param context
61. * @param message
62. */
63. public static void showLong(Context context, int message)
64. {
65. if (isShow)
66. Toast.makeText(context, message, Toast.LENGTH_LONG).show();
67. }
68.
69. /**
70. * 自定义显示Toast时间
71. *
72. * @param context
73. * @param message
74. * @param duration
75. */
76. public static void show(Context context, CharSequence message, int duration)
77. {
78. if (isShow)
79. Toast.makeText(context, message, duration).show();
80. }
81.
82. /**
83. * 自定义显示Toast时间
84. *
85. * @param context
86. * @param message
87. * @param duration
88. */
89. public static void show(Context context, int message, int duration)
90. {
91. if (isShow)
92. Toast.makeText(context, message, duration).show();
93. }
94.
95. }
也是非常简单的一个封装,能省则省了~~
3、SharedPreferences封装类SPUtils
1. package com.zhy.utils;
2.
3. import java.lang.reflect.InvocationTargetException;
4. import java.lang.reflect.Method;
5. import java.util.Map;
6.
7. import android.content.Context;
8. import android.content.SharedPreferences;
9.
10. public class SPUtils
11. {
12. /**
13. * 保存在手机里面的文件名
14. */
15. public static final String FILE_NAME = "share_data";
16.
17. /**
18. * 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
19. *
20. * @param context
21. * @param key
22. * @param object
23. */
24. public static void put(Context context, String key, Object object)
25. {
26.
27. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
28. Context.MODE_PRIVATE);
29. SharedPreferences.Editor editor = sp.edit();
30.
31. if (object instanceof String)
32. {
33. editor.putString(key, (String) object);
34. else if (object instanceof Integer)
35. {
36. editor.putInt(key, (Integer) object);
37. else if (object instanceof Boolean)
38. {
39. editor.putBoolean(key, (Boolean) object);
40. else if (object instanceof Float)
41. {
42. editor.putFloat(key, (Float) object);
43. else if (object instanceof Long)
44. {
45. editor.putLong(key, (Long) object);
46. else
47. {
48. editor.putString(key, object.toString());
49. }
50.
51. SharedPreferencesCompat.apply(editor);
52. }
53.
54. /**
55. * 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
56. *
57. * @param context
58. * @param key
59. * @param defaultObject
60. * @return
61. */
62. public static Object get(Context context, String key, Object defaultObject)
63. {
64. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
65. Context.MODE_PRIVATE);
66.
67. if (defaultObject instanceof String)
68. {
69. return sp.getString(key, (String) defaultObject);
70. else if (defaultObject instanceof Integer)
71. {
72. return sp.getInt(key, (Integer) defaultObject);
73. else if (defaultObject instanceof Boolean)
74. {
75. return sp.getBoolean(key, (Boolean) defaultObject);
76. else if (defaultObject instanceof Float)
77. {
78. return sp.getFloat(key, (Float) defaultObject);
79. else if (defaultObject instanceof Long)
80. {
81. return sp.getLong(key, (Long) defaultObject);
82. }
83.
84. return null;
85. }
86.
87. /**
88. * 移除某个key值已经对应的值
89. * @param context
90. * @param key
91. */
92. public static void remove(Context context, String key)
93. {
94. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
95. Context.MODE_PRIVATE);
96. SharedPreferences.Editor editor = sp.edit();
97. editor.remove(key);
98. SharedPreferencesCompat.apply(editor);
99. }
100.
101. /**
102. * 清除所有数据
103. * @param context
104. */
105. public static void clear(Context context)
106. {
107. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
108. Context.MODE_PRIVATE);
109. SharedPreferences.Editor editor = sp.edit();
110. editor.clear();
111. SharedPreferencesCompat.apply(editor);
112. }
113.
114. /**
115. * 查询某个key是否已经存在
116. * @param context
117. * @param key
118. * @return
119. */
120. public static boolean contains(Context context, String key)
121. {
122. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
123. Context.MODE_PRIVATE);
124. return sp.contains(key);
125. }
126.
127. /**
128. * 返回所有的键值对
129. *
130. * @param context
131. * @return
132. */
133. public static Map<String, ?> getAll(Context context)
134. {
135. SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
136. Context.MODE_PRIVATE);
137. return sp.getAll();
138. }
139.
140. /**
141. * 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
142. *
143. * @author zhy
144. *
145. */
146. private static class SharedPreferencesCompat
147. {
148. private static final Method sApplyMethod = findApplyMethod();
149.
150. /**
151. * 反射查找apply的方法
152. *
153. * @return
154. */
155. @SuppressWarnings({ "unchecked", "rawtypes" })
156. private static Method findApplyMethod()
157. {
158. try
159. {
160. class;
161. return clz.getMethod("apply");
162. catch (NoSuchMethodException e)
163. {
164. }
165.
166. return null;
167. }
168.
169. /**
170. * 如果找到则使用apply执行,否则使用commit
171. *
172. * @param editor
173. */
174. public static void apply(SharedPreferences.Editor editor)
175. {
176. try
177. {
178. if (sApplyMethod != null)
179. {
180. sApplyMethod.invoke(editor);
181. return;
182. }
183. catch (IllegalArgumentException e)
184. {
185. catch (IllegalAccessException e)
186. {
187. catch (InvocationTargetException e)
188. {
189. }
190. editor.commit();
191. }
192. }
193.
194. }
对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;
注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit
首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;
所以我们使用apply进行替代,apply异步的进行写入;
但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;
SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~
4、单位转换类 DensityUtils
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.util.TypedValue;
5.
6. /**
7. * 常用单位转换的辅助类
8. *
9. *
10. *
11. */
12. public class DensityUtils
13. {
14. private DensityUtils()
15. {
16. /* cannot be instantiated */
17. throw new UnsupportedOperationException("cannot be instantiated");
18. }
19.
20. /**
21. * dp转px
22. *
23. * @param context
24. * @param val
25. * @return
26. */
27. public static int dp2px(Context context, float dpVal)
28. {
29. return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
30. dpVal, context.getResources().getDisplayMetrics());
31. }
32.
33. /**
34. * sp转px
35. *
36. * @param context
37. * @param val
38. * @return
39. */
40. public static int sp2px(Context context, float spVal)
41. {
42. return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
43. spVal, context.getResources().getDisplayMetrics());
44. }
45.
46. /**
47. * px转dp
48. *
49. * @param context
50. * @param pxVal
51. * @return
52. */
53. public static float px2dp(Context context, float pxVal)
54. {
55. final float scale = context.getResources().getDisplayMetrics().density;
56. return (pxVal / scale);
57. }
58.
59. /**
60. * px转sp
61. *
62. * @param fontScale
63. * @param pxVal
64. * @return
65. */
66. public static float px2sp(Context context, float pxVal)
67. {
68. return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
69. }
70.
71. }
5、SD卡相关辅助类 SDCardUtils
1. package com.zhy.utils;
2.
3. import java.io.File;
4.
5. import android.os.Environment;
6. import android.os.StatFs;
7.
8. /**
9. * SD卡相关的辅助类
10. *
11. *
12. *
13. */
14. public class SDCardUtils
15. {
16. private SDCardUtils()
17. {
18. /* cannot be instantiated */
19. throw new UnsupportedOperationException("cannot be instantiated");
20. }
21.
22. /**
23. * 判断SDCard是否可用
24. *
25. * @return
26. */
27. public static boolean isSDCardEnable()
28. {
29. return Environment.getExternalStorageState().equals(
30. Environment.MEDIA_MOUNTED);
31.
32. }
33.
34. /**
35. * 获取SD卡路径
36. *
37. * @return
38. */
39. public static String getSDCardPath()
40. {
41. return Environment.getExternalStorageDirectory().getAbsolutePath()
42. + File.separator;
43. }
44.
45. /**
46. * 获取SD卡的剩余容量 单位byte
47. *
48. * @return
49. */
50. public static long getSDCardAllSize()
51. {
52. if (isSDCardEnable())
53. {
54. new StatFs(getSDCardPath());
55. // 获取空闲的数据块的数量
56. long availableBlocks = (long) stat.getAvailableBlocks() - 4;
57. // 获取单个数据块的大小(byte)
58. long freeBlocks = stat.getAvailableBlocks();
59. return freeBlocks * availableBlocks;
60. }
61. return 0;
62. }
63.
64. /**
65. * 获取指定路径所在空间的剩余可用容量字节数,单位byte
66. *
67. * @param filePath
68. * @return 容量字节 SDCard可用空间,内部存储可用空间
69. */
70. public static long getFreeBytes(String filePath)
71. {
72. // 如果是sd卡的下的路径,则获取sd卡可用容量
73. if (filePath.startsWith(getSDCardPath()))
74. {
75. filePath = getSDCardPath();
76. else
77. // 如果是内部存储的路径,则获取内存存储的可用容量
78. filePath = Environment.getDataDirectory().getAbsolutePath();
79. }
80. new StatFs(filePath);
81. long availableBlocks = (long) stat.getAvailableBlocks() - 4;
82. return stat.getBlockSize() * availableBlocks;
83. }
84.
85. /**
86. * 获取系统存储路径
87. *
88. * @return
89. */
90. public static String getRootDirectoryPath()
91. {
92. return Environment.getRootDirectory().getAbsolutePath();
93. }
94.
95.
96. }
6、屏幕相关辅助类 ScreenUtils
1. package com.zhy.utils;
2.
3. import android.app.Activity;
4. import android.content.Context;
5. import android.graphics.Bitmap;
6. import android.graphics.Rect;
7. import android.util.DisplayMetrics;
8. import android.view.View;
9. import android.view.WindowManager;
10.
11. /**
12. * 获得屏幕相关的辅助类
13. *
14. *
15. *
16. */
17. public class ScreenUtils
18. {
19. private ScreenUtils()
20. {
21. /* cannot be instantiated */
22. throw new UnsupportedOperationException("cannot be instantiated");
23. }
24.
25. /**
26. * 获得屏幕高度
27. *
28. * @param context
29. * @return
30. */
31. public static int getScreenWidth(Context context)
32. {
33. WindowManager wm = (WindowManager) context
34. .getSystemService(Context.WINDOW_SERVICE);
35. new DisplayMetrics();
36. wm.getDefaultDisplay().getMetrics(outMetrics);
37. return outMetrics.widthPixels;
38. }
39.
40. /**
41. * 获得屏幕宽度
42. *
43. * @param context
44. * @return
45. */
46. public static int getScreenHeight(Context context)
47. {
48. WindowManager wm = (WindowManager) context
49. .getSystemService(Context.WINDOW_SERVICE);
50. new DisplayMetrics();
51. wm.getDefaultDisplay().getMetrics(outMetrics);
52. return outMetrics.heightPixels;
53. }
54.
55. /**
56. * 获得状态栏的高度
57. *
58. * @param context
59. * @return
60. */
61. public static int getStatusHeight(Context context)
62. {
63.
64. int statusHeight = -1;
65. try
66. {
67. "com.android.internal.R$dimen");
68. Object object = clazz.newInstance();
69. int height = Integer.parseInt(clazz.getField("status_bar_height")
70. .get(object).toString());
71. statusHeight = context.getResources().getDimensionPixelSize(height);
72. catch (Exception e)
73. {
74. e.printStackTrace();
75. }
76. return statusHeight;
77. }
78.
79. /**
80. * 获取当前屏幕截图,包含状态栏
81. *
82. * @param activity
83. * @return
84. */
85. public static Bitmap snapShotWithStatusBar(Activity activity)
86. {
87. View view = activity.getWindow().getDecorView();
88. true);
89. view.buildDrawingCache();
90. Bitmap bmp = view.getDrawingCache();
91. int width = getScreenWidth(activity);
92. int height = getScreenHeight(activity);
93. null;
94. 0, 0, width, height);
95. view.destroyDrawingCache();
96. return bp;
97.
98. }
99.
100. /**
101. * 获取当前屏幕截图,不包含状态栏
102. *
103. * @param activity
104. * @return
105. */
106. public static Bitmap snapShotWithoutStatusBar(Activity activity)
107. {
108. View view = activity.getWindow().getDecorView();
109. true);
110. view.buildDrawingCache();
111. Bitmap bmp = view.getDrawingCache();
112. new Rect();
113. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
114. int statusBarHeight = frame.top;
115.
116. int width = getScreenWidth(activity);
117. int height = getScreenHeight(activity);
118. null;
119. 0, statusBarHeight, width, height
120. - statusBarHeight);
121. view.destroyDrawingCache();
122. return bp;
123.
124. }
125.
126. }
7、App相关辅助类
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.content.pm.PackageInfo;
5. import android.content.pm.PackageManager;
6. import android.content.pm.PackageManager.NameNotFoundException;
7.
8. /**
9. * 跟App相关的辅助类
10. *
11. *
12. *
13. */
14. public class AppUtils
15. {
16.
17. private AppUtils()
18. {
19. /* cannot be instantiated */
20. throw new UnsupportedOperationException("cannot be instantiated");
21.
22. }
23.
24. /**
25. * 获取应用程序名称
26. */
27. public static String getAppName(Context context)
28. {
29. try
30. {
31. PackageManager packageManager = context.getPackageManager();
32. PackageInfo packageInfo = packageManager.getPackageInfo(
33. 0);
34. int labelRes = packageInfo.applicationInfo.labelRes;
35. return context.getResources().getString(labelRes);
36. catch (NameNotFoundException e)
37. {
38. e.printStackTrace();
39. }
40. return null;
41. }
42.
43. /**
44. * [获取应用程序版本名称信息]
45. *
46. * @param context
47. * @return 当前应用的版本名称
48. */
49. public static String getVersionName(Context context)
50. {
51. try
52. {
53. PackageManager packageManager = context.getPackageManager();
54. PackageInfo packageInfo = packageManager.getPackageInfo(
55. 0);
56. return packageInfo.versionName;
57.
58. catch (NameNotFoundException e)
59. {
60. e.printStackTrace();
61. }
62. return null;
63. }
64.
65. }
8、软键盘相关辅助类KeyBoardUtils
1. package com.zhy.utils;
2.
3. import android.content.Context;
4. import android.view.inputmethod.InputMethodManager;
5. import android.widget.EditText;
6.
7. /**
8. * 打开或关闭软键盘
9. *
10. * @author zhy
11. *
12. */
13. public class KeyBoardUtils
14. {
15. /**
16. * 打卡软键盘
17. *
18. * @param mEditText
19. * 输入框
20. * @param mContext
21. * 上下文
22. */
23. public static void openKeybord(EditText mEditText, Context mContext)
24. {
25. InputMethodManager imm = (InputMethodManager) mContext
26. .getSystemService(Context.INPUT_METHOD_SERVICE);
27. imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
28. imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
29. InputMethodManager.HIDE_IMPLICIT_ONLY);
30. }
31.
32. /**
33. * 关闭软键盘
34. *
35. * @param mEditText
36. * 输入框
37. * @param mContext
38. * 上下文
39. */
40. public static void closeKeybord(EditText mEditText, Context mContext)
41. {
42. InputMethodManager imm = (InputMethodManager) mContext
43. .getSystemService(Context.INPUT_METHOD_SERVICE);
44.
45. 0);
46. }
47. }
9、网络相关辅助类 NetUtils
1. package com.zhy.utils;
2.
3. import android.app.Activity;
4. import android.content.ComponentName;
5. import android.content.Context;
6. import android.content.Intent;
7. import android.net.ConnectivityManager;
8. import android.net.NetworkInfo;
9.
10. /**
11. * 跟网络相关的工具类
12. *
13. *
14. *
15. */
16. public class NetUtils
17. {
18. private NetUtils()
19. {
20. /* cannot be instantiated */
21. throw new UnsupportedOperationException("cannot be instantiated");
22. }
23.
24. /**
25. * 判断网络是否连接
26. *
27. * @param context
28. * @return
29. */
30. public static boolean isConnected(Context context)
31. {
32.
33. ConnectivityManager connectivity = (ConnectivityManager) context
34. .getSystemService(Context.CONNECTIVITY_SERVICE);
35.
36. if (null != connectivity)
37. {
38.
39. NetworkInfo info = connectivity.getActiveNetworkInfo();
40. if (null != info && info.isConnected())
41. {
42. if (info.getState() == NetworkInfo.State.CONNECTED)
43. {
44. return true;
45. }
46. }
47. }
48. return false;
49. }
50.
51. /**
52. * 判断是否是wifi连接
53. */
54. public static boolean isWifi(Context context)
55. {
56. ConnectivityManager cm = (ConnectivityManager) context
57. .getSystemService(Context.CONNECTIVITY_SERVICE);
58.
59. if (cm == null)
60. return false;
61. return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
62.
63. }
64.
65. /**
66. * 打开网络设置界面
67. */
68. public static void openSetting(Activity activity)
69. {
70. new Intent("/");
71. new ComponentName("com.android.settings",
72. "com.android.settings.WirelessSettings");
73. intent.setComponent(cm);
74. "android.intent.action.VIEW");
75. 0);
76. }
77.
78. }
10、Http相关辅助类 HttpUtils
1. package com.zhy.utils;
2.
3. import java.io.BufferedReader;
4. import java.io.ByteArrayOutputStream;
5. import java.io.IOException;
6. import java.io.InputStream;
7. import java.io.InputStreamReader;
8. import java.io.PrintWriter;
9. import java.net.HttpURLConnection;
10. import java.net.URL;
11.
12. /**
13. * Http请求的工具类
14. *
15. * @author zhy
16. *
17. */
18. public class HttpUtils
19. {
20.
21. private static final int TIMEOUT_IN_MILLIONS = 5000;
22.
23. public interface CallBack
24. {
25. void onRequestComplete(String result);
26. }
27.
28.
29. /**
30. * 异步的Get请求
31. *
32. * @param urlStr
33. * @param callBack
34. */
35. public static void doGetAsyn(final String urlStr, final CallBack callBack)
36. {
37. new Thread()
38. {
39. public void run()
40. {
41. try
42. {
43. String result = doGet(urlStr);
44. if (callBack != null)
45. {
46. callBack.onRequestComplete(result);
47. }
48. catch (Exception e)
49. {
50. e.printStackTrace();
51. }
52.
53. };
54. }.start();
55. }
56.
57. /**
58. * 异步的Post请求
59. * @param urlStr
60. * @param params
61. * @param callBack
62. * @throws Exception
63. */
64. public static void doPostAsyn(final String urlStr, final String params,
65. final CallBack callBack) throws Exception
66. {
67. new Thread()
68. {
69. public void run()
70. {
71. try
72. {
73. String result = doPost(urlStr, params);
74. if (callBack != null)
75. {
76. callBack.onRequestComplete(result);
77. }
78. catch (Exception e)
79. {
80. e.printStackTrace();
81. }
82.
83. };
84. }.start();
85.
86. }
87.
88. /**
89. * Get请求,获得返回数据
90. *
91. * @param urlStr
92. * @return
93. * @throws Exception
94. */
95. public static String doGet(String urlStr)
96. {
97. null;
98. null;
99. null;
100. null;
101. try
102. {
103. new URL(urlStr);
104. conn = (HttpURLConnection) url.openConnection();
105. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
106. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
107. "GET");
108. "accept", "*/*");
109. "connection", "Keep-Alive");
110. if (conn.getResponseCode() == 200)
111. {
112. is = conn.getInputStream();
113. new ByteArrayOutputStream();
114. int len = -1;
115. byte[] buf = new byte[128];
116.
117. while ((len = is.read(buf)) != -1)
118. {
119. 0, len);
120. }
121. baos.flush();
122. return baos.toString();
123. else
124. {
125. throw new RuntimeException(" responseCode is not 200 ... ");
126. }
127.
128. catch (Exception e)
129. {
130. e.printStackTrace();
131. finally
132. {
133. try
134. {
135. if (is != null)
136. is.close();
137. catch (IOException e)
138. {
139. }
140. try
141. {
142. if (baos != null)
143. baos.close();
144. catch (IOException e)
145. {
146. }
147. conn.disconnect();
148. }
149.
150. return null ;
151.
152. }
153.
154. /**
155. * 向指定 URL 发送POST方法的请求
156. *
157. @param url
158. * 发送请求的 URL
159. @param param
160. * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
161. @return 所代表远程资源的响应结果
162. @throws Exception
163. */
164. public static String doPost(String url, String param)
165. {
166. null;
167. null;
168. "";
169. try
170. {
171. new URL(url);
172. // 打开和URL之间的连接
173. HttpURLConnection conn = (HttpURLConnection) realUrl
174. .openConnection();
175. // 设置通用的请求属性
176. "accept", "*/*");
177. "connection", "Keep-Alive");
178. "POST");
179. "Content-Type",
180. "application/x-www-form-urlencoded");
181. "charset", "utf-8");
182. false);
183. // 发送POST请求必须设置如下两行
184. true);
185. true);
186. conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
187. conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
188.
189. if (param != null && !param.trim().equals(""))
190. {
191. // 获取URLConnection对象对应的输出流
192. new PrintWriter(conn.getOutputStream());
193. // 发送请求参数
194. out.print(param);
195. // flush输出流的缓冲
196. out.flush();
197. }
198. // 定义BufferedReader输入流来读取URL的响应
199. new BufferedReader(
200. new InputStreamReader(conn.getInputStream()));
201. String line;
202. while ((line = in.readLine()) != null)
203. {
204. result += line;
205. }
206. catch (Exception e)
207. {
208. e.printStackTrace();
209. }
210. // 使用finally块来关闭输出流、输入流
211. finally
212. {
213. try
214. {
215. if (out != null)
216. {
217. out.close();
218. }
219. if (in != null)
220. {
221. in.close();
222. }
223. catch (IOException ex)
224. {
225. ex.printStackTrace();
226. }
227. }
228. return result;
229. }
230. }
/**
* 获取应用程序名称
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* [获取应用程序版本名称信息]
*
* @param context
* @return 当前应用的版本名称
*/
public static String getVersionName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**判断是否为中文*/
public static boolean isZh(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言",language);
if (language.endsWith("zh"))
return true;
else
return false;
}
/**获取当前语言*/
public static String language(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言是",language);
return language;
}
}
如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~
源码点击下载
/**
* 获取应用程序名称
*/
public static String getAppName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelRes;
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* [获取应用程序版本名称信息]
*
* @param context
* @return 当前应用的版本名称
*/
public static String getVersionName(Context context) {
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
return packageInfo.versionName;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**判断是否为中文*/
public static boolean isZh(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言",language);
if (language.endsWith("zh"))
return true;
else
return false;
}
/**获取当前语言*/
public static String language(Context context) {
// zh:汉语 en:英语
Locale locale = context.getResources().getConfiguration().locale;
String language = locale.getLanguage();
Log.e("当前语言是",language);
return language;
}
}