转载: http://blog.csdn.net/tu_bingbing/article/details/8469871

近段时间由于要对手机网络状况进行判断、开启和关闭,从网上找了些资料,现整理如下

包含了对WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测,在小米和三星平板上测试均通过

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>

package com.my.device_admin.business;

import java.lang.reflect.Method;

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.provider.Settings; public class NetworkManager { private Context context;
private ConnectivityManager connManager; public NetworkManager(Context context) {
this.context = context;
connManager = (ConnectivityManager) this.context
.getSystemService(Context.CONNECTIVITY_SERVICE);
} /**
* @return 网络是否连接可用
*/
public boolean isNetworkConnected() { NetworkInfo networkinfo = connManager.getActiveNetworkInfo(); if (networkinfo != null) {
return networkinfo.isConnected();
} return false;
} /**
* @return wifi是否连接可用
*/
public boolean isWifiConnected() { NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI); if (mWifi != null) {
return mWifi.isConnected();
} return false;
} /**
* 当wifi不能访问网络时,mobile才会起作用
* @return GPRS是否连接可用
*/
public boolean isMobileConnected() { NetworkInfo mMobile = connManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (mMobile != null) {
return mMobile.isConnected();
}
return false;
} /**
* GPRS网络开关 反射ConnectivityManager中hide的方法setMobileDataEnabled 可以开启和关闭GPRS网络
*
* @param isEnable
* @throws Exception
*/
public void toggleGprs(boolean isEnable) throws Exception {
Class<?> cmClass = connManager.getClass();
Class<?>[] argClasses = new Class[1];
argClasses[0] = boolean.class; // 反射ConnectivityManager中hide的方法setMobileDataEnabled,可以开启和关闭GPRS网络
Method method = cmClass.getMethod("setMobileDataEnabled", argClasses);
method.invoke(connManager, isEnable);
} /**
* WIFI网络开关
*
* @param enabled
* @return 设置是否success
*/
public boolean toggleWiFi(boolean enabled) {
WifiManager wm = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
return wm.setWifiEnabled(enabled); } /**
*
* @return 是否处于飞行模式
*/
public boolean isAirplaneModeOn() {
// 返回值是1时表示处于飞行模式
int modeIdx = Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
boolean isEnabled = (modeIdx == 1);
return isEnabled;
}
/**
* 飞行模式开关
* @param setAirPlane
*/
public void toggleAirplaneMode(boolean setAirPlane) {
Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, setAirPlane ? 1 : 0);
// 广播飞行模式信号的改变,让相应的程序可以处理。
// 不发送广播时,在非飞行模式下,Android 2.2.1上测试关闭了Wifi,不关闭正常的通话网络(如GMS/GPRS等)。
// 不发送广播时,在飞行模式下,Android 2.2.1上测试无法关闭飞行模式。
Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
// intent.putExtra("Sponsor", "Sodino");
// 2.3及以后,需设置此状态,否则会一直处于与运营商断连的情况
intent.putExtra("state", setAirPlane);
context.sendBroadcast(intent);
}
}

最新文章

  1. [emacs] 使用ggtags浏览代码
  2. HDU 1848 Fibonacci again and again【SG函数】
  3. 第二篇.Bootstrap起步
  4. Create Your Tab and LayerTabMenu In Katana
  5. hdu 0-1背包
  6. print带参数格式
  7. 移动端touch触屏滑动事件、滑动触屏事件监听!
  8. JS中函数参数和函数返回值的理解
  9. Android开发中使用static变量应该注意的问题
  10. Numpy库(个人学习笔记)
  11. Git生成ssh密钥指定文件
  12. 云笔记项目-Spring事务学习-传播NEVER
  13. python 计算机发展史,线程Process使用 for循环创建 2种传参方式 jion方法 __main__的解释
  14. Mac下搭建solr搜索引擎与PHP扩展开发(上)
  15. NetCore2.0 CodeFirst 解析全国区划信息
  16. [mysql,2018-02-28] bat安装、启动mysql,并创建数据库、表
  17. python - socketserver 模块应用
  18. python day05--字典
  19. acm 2057
  20. MySQL 插入emoji 表情

热门文章

  1. HDU5772 String problem
  2. Android无埋点数据收集SDK关键技术
  3. Web Application Vulnerabilities and Potential Problem Due to Bad Design
  4. EL表达式中获取list长度(JSTL函数用法)
  5. linux基础的基础命令操作
  6. wx.ScrolledWindow wx.PseudoDC
  7. java中 快捷键输入System.out.println();
  8. python 学习笔记 多进程
  9. golang的各种打印
  10. 【 Zabbix 】— Tomcat监控及故障重启服务