Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418394
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1393
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:17
个人简介

www.vibexie.com vibexie@qq.com

文章分类

全部博文(121)

文章存档

2015年(55)

2014年(66)

我的朋友

分类: Android平台

2015-04-23 09:55:19


NetworkStateUtil.java

  1. package com.vibexie.networksettinglikeuc;

  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.net.ConnectivityManager;
  5. import android.net.NetworkInfo;
  6. import android.net.wifi.WifiManager;
  7. import android.os.Build;
  8. import android.provider.Settings;

  9. import java.lang.reflect.Method;

  10. /**
  11.  * 网络连接状态的工具类,并提供设置网络的方法
  12.  * Created by vibexie on 4/22/15.
  13.  *
  14.  * 使用时请参考sdk doc:/docs/training/basics/network-ops/managing.html
  15.  *
  16.  * 注意必须添加这3个权限
  17.  *
  18.  *
  19.  *
  20.  *
  21.  *
  22.  */
  23. public class NetworkStateUtil {

  24.     /**
  25.      * 判断网络是否连接
  26.      * @param context
  27.      * @return
  28.      */
  29.     public static boolean isNetWorkConnected(Context context){
  30.         ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

  31.         NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

  32.         return (networkInfo != null && networkInfo.isConnected());
  33.     }



  34.     /**
  35.      * 判断wifi是否连接
  36.      * @param context
  37.      * @return
  38.      */
  39.     public static boolean isWifiConnected(Context context){
  40.         ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

  41.         NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

  42.         return networkInfo.isConnected();
  43.     }



  44.     /**
  45.      * 判断移动网络是否连接
  46.      * @param context
  47.      * @return
  48.      */
  49.     public static boolean isMobileConnected(Context context){
  50.         ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

  51.         NetworkInfo networkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

  52.         return networkInfo.isConnected();
  53.     }



  54.     /**
  55.      * 调用系统设置进行设置网络
  56.      * @param context
  57.      */
  58.     public static void goToSetNetWork(Context context){
  59.         Intent intent=null;

  60.         /**
  61.          * 判断安卓版本
  62.          */
  63.         if(Build.VERSION.SDK_INT>10) {
  64.             /*3.0以上版本*/

  65.             intent=new Intent(Settings.ACTION_WIFI_SETTINGS);
  66.         }else {
  67.             /*3.0以下版本*/

  68.             intent=new Intent();
  69.             intent.setClassName("com.android.settings","com.android.settings.WifiSettings");
  70.         }

  71.         context.startActivity(intent);
  72.     }



  73.     /**
  74.      * 设置wifi状态
  75.      * 注意需要添加权限:
  76.      *
  77.      * @param context
  78.      * @param enabled
  79.      */
  80.     public static void setWifiEnabled(Context context,boolean enabled){
  81.         WifiManager wifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  82.         wifiManager.setWifiEnabled(enabled);
  83.     }


  84.     /**
  85.      * 设置移动网络状态
  86.      * 注意需要添加权限:
  87.      * @param context 上下文
  88.      * @param enabled 是否开启移动网络连接
  89.      */
  90.     public static void setMobileDataEnabled(Context context, boolean enabled) {
  91.         /**
  92.          * 必须采用反射机制获取系统隐藏的功能
  93.          */

  94. // /**
  95. // *StackOverStack解决方案:
  96. // */
  97. // try {
  98. // ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  99. // Class conmanClass = Class.forName(conman.getClass().getName());
  100. // Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
  101. // iConnectivityManagerField.setAccessible(true);
  102. // Object iConnectivityManager = iConnectivityManagerField.get(conman);
  103. // Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
  104. // Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
  105. // setMobileDataEnabledMethod.setAccessible(true);
  106. //
  107. // setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
  108. //
  109. // } catch (Exception e) {
  110. // // TODO Auto-generated catch block
  111. // e.printStackTrace();
  112. // }

  113.         /**
  114.          * 进行简化
  115.          */
  116.         ConnectivityManager connectivityManager = null;
  117.         Class connectivityManagerClz = null;
  118.         try {
  119.             connectivityManager = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
  120.             connectivityManagerClz = connectivityManager.getClass();
  121.             Method method = connectivityManagerClz.getMethod("setMobileDataEnabled", new Class[] { boolean.class });
  122.             method.invoke(connectivityManager, enabled);
  123.         } catch (Exception e) {
  124.             e.printStackTrace();
  125.         }
  126.     }
  127. }

阅读(2645) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~