package licola.demo.com.huabandemo.Util; import android.app.Activity; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.provider.Settings; import android.support.design.widget.Snackbar; import android.view.View; import com.google.gson.JsonSyntaxException; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.net.UnknownHostException; import licola.demo.com.huabandemo.R; /** * 跟网络相关的工具类 * * @author zhy */ public class NetUtils { private NetUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 弹出snackbar 提示错误 并添加点击事件 跳转到设置 * * @param context * @param view * @param message * @param action */ public static void showNetworkErrorSnackBar(final Context context, View view, String message, String action) { Snackbar.make(view, message, Snackbar.LENGTH_LONG) .setAction(action, new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Settings.ACTION_SETTINGS); context.startActivity(intent); } }) .show(); } public static Snackbar showSnackBar(View rootView, String message) { Snackbar snackbar=Snackbar.make(rootView, message, Snackbar.LENGTH_SHORT); snackbar.show(); return snackbar; } public static void checkHttpException(Context mContext, Throwable mThrowable, View mRootView) { String snack_action_to_setting = mContext.getString(R.string.snack_action_to_setting); if ((mThrowable instanceof UnknownHostException)) { String snack_message_net_error = mContext.getString(R.string.snack_message_net_error); NetUtils.showNetworkErrorSnackBar(mContext, mRootView, snack_message_net_error, snack_action_to_setting); } else if (mThrowable instanceof JsonSyntaxException) { String snack_message_data_error = mContext.getString(R.string.snack_message_data_error); NetUtils.showNetworkErrorSnackBar(mContext, mRootView, snack_message_data_error, snack_action_to_setting); } else if (mThrowable instanceof SocketTimeoutException) { String snack_message_time_out = mContext.getString(R.string.snack_message_timeout_error); NetUtils.showNetworkErrorSnackBar(mContext, mRootView, snack_message_time_out, snack_action_to_setting); } else if (mThrowable instanceof ConnectException) { String snack_message_net_error = mContext.getString(R.string.snack_message_net_error); NetUtils.showNetworkErrorSnackBar(mContext, mRootView, snack_message_net_error, snack_action_to_setting); } else { String snack_message_unknown_error = mContext.getString(R.string.snack_message_unknown_error); NetUtils.showSnackBar(mRootView,snack_message_unknown_error); } } /** * 判断网络是否连接 * * @param context * @return */ public static boolean isConnected(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (null != connectivity) { NetworkInfo info = connectivity.getActiveNetworkInfo(); if (null != info && info.isConnected()) { if (info.getState() == NetworkInfo.State.CONNECTED) { return true; } } } return false; } /** * 判断是否是wifi连接 */ public static boolean isWifi(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) return false; return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI; } /** * 打开网络设置界面 */ public static void openSetting(Activity activity) { Intent intent = new Intent("/"); ComponentName cm = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings"); intent.setComponent(cm); intent.setAction("android.intent.action.VIEW"); activity.startActivityForResult(intent, 0); } }