[Android Traffic] Android网络开启、关闭整理
2024-08-26 17:06:15
转载: 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);
}
}
最新文章
- [emacs] 使用ggtags浏览代码
- HDU 1848 Fibonacci again and again【SG函数】
- 第二篇.Bootstrap起步
- Create Your Tab and LayerTabMenu In Katana
- hdu 0-1背包
- print带参数格式
- 移动端touch触屏滑动事件、滑动触屏事件监听!
- JS中函数参数和函数返回值的理解
- Android开发中使用static变量应该注意的问题
- Numpy库(个人学习笔记)
- Git生成ssh密钥指定文件
- 云笔记项目-Spring事务学习-传播NEVER
- python 计算机发展史,线程Process使用 for循环创建 2种传参方式 jion方法 __main__的解释
- Mac下搭建solr搜索引擎与PHP扩展开发(上)
- NetCore2.0 CodeFirst 解析全国区划信息
- [mysql,2018-02-28] bat安装、启动mysql,并创建数据库、表
- python - socketserver 模块应用
- python day05--字典
- acm 2057
- MySQL 插入emoji 表情
热门文章
- HDU5772 String problem
- Android无埋点数据收集SDK关键技术
- Web Application Vulnerabilities and Potential Problem Due to Bad Design
- EL表达式中获取list长度(JSTL函数用法)
- linux基础的基础命令操作
- wx.ScrolledWindow wx.PseudoDC
- java中 快捷键输入System.out.println();
- python 学习笔记 多进程
- golang的各种打印
- 【 Zabbix 】— Tomcat监控及故障重启服务