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);
}
}

  WiFi、GPRS、飞行模式的开启、关闭以及一些状态的检测

Android网络开启、关闭整理的更多相关文章

  1. [Android Traffic] Android网络开启、关闭整理

    转载: http://blog.csdn.net/tu_bingbing/article/details/8469871 近段时间由于要对手机网络状况进行判断.开启和关闭,从网上找了些资料,现整理如下 ...

  2. Android网络文件下载模块整理

    一.知识基础 tomcat服务器配置 理解http协议 理解javaIO操作相关知识 SDcard操作知识 Android 权限配置 二.实现步骤 1.从网上获取资源 public String do ...

  3. android网络交互之DNS优化知识整理

    android网络交互之DNS优化知识整理 之前的工作中,经常会遇到DNS解析出问题导致网络交互的操作无法正常进行. UnknownHostException 在很多的移动开发过程中,与服务端的交互的 ...

  4. Android -- Service的开启关闭与生命周期

    Service是Android 系统中的四大组件之一,是在一段不定的时间运行在后台,不和用户交互应用组件. service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity ...

  5. Android高级工程师面试题整理

    这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的题目.熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率. 主要分为以下几部分: (1)java ...

  6. 6、android 网络编程

    1.基于socket的用法 服务器端: 先启动一个服务器端的socket     ServerSocket svr = new ServerSocket(8989); 开始侦听请求 Socket s  ...

  7. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  8. Android 网络连接判断与处理

    Android网络连接判断与处理  获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ...

  9. Linux系统默认服务建议开启关闭说明列表

    服务名称 功能简介 建议 acpid 电源管理接口.如果是笔记本用户建议开启,可以监听内核层的相关电源事件. 开启 anacron 系统的定时任务程序.cron的一个子系统,如果定时任务错过了执行时间 ...

随机推荐

  1. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  2. HDU--2722

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2722 分析:简单最短路,读入数据烦. #include<iostream> #includ ...

  3. spoj 694 705 不相同的子串的个数

    http://www.spoj.com/problems/SUBST1/ SUBST1 - New Distinct Substrings #suffix-array-8 Given a string ...

  4. Qt ------ QElapsedTimer 计算消耗多少时间

    The QElapsedTimer class provides a fast way to calculate elapsed times. The QElapsedTimer class is u ...

  5. vue-router的新奇写法

    加班中........................... 我们以前写路由是下面这样的 这导致了页面一多,我们的路由文件内容就比较多,不好看. 下面我为大家介绍一下,新的一种写法 这种写法,我们只需 ...

  6. jQuery中deferred的对象使用

    什么是deferred对象 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是 ...

  7. PowderDesign的使用

    (一)PowderDesign的安装 powderDesign下面简称pd,安装的话在网上找到安装包,安装后破解就行了.打开如图: (二)sql导入 操作步骤:File----------->R ...

  8. java中集合去重2

    1.对集合中的自动定义的对象去重: 自定义Person类,同时复写hashCode和equals方法 package collection; public class Person { private ...

  9. uoj311 【UNR #2】积劳成疾

    传送门:http://uoj.ac/problem/311 [题解] 这题的期望dp好神奇啊(可能是我太菜了) 由于每个位置都完全一样,所以我们设$f_{i,j}$表示审了连续$i$个位置,最大值不超 ...

  10. 天梯赛 L2-005 集合相似度 (set容器)

    给定两个整数集合,它们的相似度定义为:Nc/Nt*100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你的任务就是计算任意一对给定集合的相似度. 输入格式: 输 ...