package org.orange.familylink.util; import org.orange.familylink.R; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.FragmentManager; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; /** * 网络操作类,用来判断是否有网络,有哪些类型网络可用,无网络时询问是否打开网络设置 * @author Orange Team * */ public class Network { /** * */ public static final String FRAGMENT_TAG_NO_CONNECTION_DIALOG = Network.class.getName() + "noConnectionDialog"; /** * 禁止实例化(因为本类只有静态方法,实例无用) */ private Network(){} /** * 获取网络连接服务管理 * @param context 应用程序环境 * @return ConnetivityManager */ public static ConnectivityManager getConnectivityManager(Context context){ return (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); } /** * 取得当前正在使用的网络类型。 * @return null for no Internet connection or one of TYPE_MOBILE, TYPE_WIFI, TYPE_WIMAX, * TYPE_ETHERNET, TYPE_BLUETOOTH, or other types defined by ConnectivityManager */ public static Integer getActiveNetworkType(Context context){ NetworkInfo networkInfo = getConnectivityManager(context).getActiveNetworkInfo(); return networkInfo==null||!networkInfo.isConnected() ? null : networkInfo.getType(); } /** * 是否可以建立Internet连接。 * @return 可以返回true;不可能建立返回false */ public static boolean isConnected(Context context){ return getActiveNetworkType(context) != null; } /** * 查看数据连接是否可用 * @return 是返回true;不是返回false */ public static boolean isMobileConnected(Context context){ Integer type = getActiveNetworkType(context); return type!=null && type==ConnectivityManager.TYPE_MOBILE; } /** * 查看wifi连接是否可用 * @return 是返回true;不是返回false */ public static boolean isWifiConnected(Context context){ Integer type = getActiveNetworkType(context); return type!=null && type==ConnectivityManager.TYPE_WIFI; } /** * 打开网络设置Activity。 * @return 成功打开返回true,失败返回false */ public static boolean openWirelessSettings(Context context){ Intent intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); // 验证此intent可被响应 if(context.getPackageManager().queryIntentActivities(intent, 0).size() > 0){ context.startActivity(intent); return true; }else return false; } /** * 打开“无网络连接”对话框,提问是否打开网络设置Activity。 */ public static void openNoConnectionDialog(FragmentManager manager){ NoConnectionDialogFragment newDialog = new NoConnectionDialogFragment(); newDialog.show(manager, FRAGMENT_TAG_NO_CONNECTION_DIALOG); } /** * “无网络连接”对话框。提问是否打开网络设置Activity。 * @author Orange Team */ public static class NoConnectionDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.no_connection_title) .setMessage(R.string.no_connection_message) .setPositiveButton(android.R.string.yes, new OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { openWirelessSettings(getActivity()); } }) .setNegativeButton(android.R.string.cancel, new OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { return; } }); return builder.create(); } } }