android判断wifi是否打开,Android判断WiFi和移动数据网络(GPRS)是否同时打开

2023-10-21 14:40

本文主要是介绍android判断wifi是否打开,Android判断WiFi和移动数据网络(GPRS)是否同时打开,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

判断 WiFi 是否打开

public static boolean isWiFiEnable(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext()

.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivityManager == null) {

return false;

}

NetworkInfo info = connectivityManager.getActiveNetworkInfo();

return !((info == null) || (!info.isAvailable())) && info.getType() == ConnectivityManager.TYPE_WIFI;

}

判断 GPRS 是否打开

public static boolean isMobileEnable(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext()

.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivityManager == null) {

return false;

}

NetworkInfo info = connectivityManager.getActiveNetworkInfo();

return !((info == null) || (!info.isAvailable())) && info.getType() == ConnectivityManager.TYPE_MOBILE;

}

判断 WiFi 与 GPRS 同开(1)

尝试:使用 isWifiEnable() 和 isMobileEnable() 联合判断。

public static boolean isAllEnable(Context context) {

return isWiFiEnable(context) && isMobileEnable(context);

}

结果:此方式无法判断 WiFi 与 GPRS 同开。

在 WiFi 和 GPRS 同时打开时系统默认使用 WiFi 网络,即networkInfo.getType() 的返回值是 TYPE_WIFI,所以isMobileEnable()的结果一定是false导致判断失败。

既然在 WiFi 和 GPRS 同时打开时可以准确判断 WiFi 的状态,那么先使用isWifiEnable()判断 WiFi 是否打开,再想办法替代isMobileEnable()判断 GPRS 是否打开即可。

public static boolean isAllEnable(Context context) {

if (isWiFiEnable(context)) {

// TODO 判断移动数据网络是否打开

} else {

return false;

}

}

判断 WiFi 与 GPRS 同开(2)

观察ConnectivityManager源码发现有这么一个函数:

e1548a515941

ConnectivityManager #getMobileDataEnabled().png

尝试使用反射调用该函数判断 WiFi 开启时 GPRS 的状态发现是可行的。

public static boolean isMobileEnableReflex(Context context) {

try {

ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext()

.getSystemService(Context.CONNECTIVITY_SERVICE);

Method getMobileDataEnabledMethod = ConnectivityManager.class.getDeclaredMethod("getMobileDataEnabled");

getMobileDataEnabledMethod.setAccessible(true);

return (Boolean) getMobileDataEnabledMethod.invoke(connectivityManager);

} catch (Exception e) {

e.printStackTrace();

return false;

}

}

最终,可行的判断 WiFi 和 GPRS 同开的方式如下:

public static boolean isAllEnable(Context context) {

return isWiFiEnable(context) && isMobileEnableReflex(context);

}

这篇关于android判断wifi是否打开,Android判断WiFi和移动数据网络(GPRS)是否同时打开的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/255040

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

MySQL 打开binlog日志的方法及注意事项

《MySQL打开binlog日志的方法及注意事项》本文给大家介绍MySQL打开binlog日志的方法及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

全屋WiFi 7无死角! 华硕 RP-BE58无线信号放大器体验测评

《全屋WiFi7无死角!华硕RP-BE58无线信号放大器体验测评》家里网络总是有很多死角没有网,我决定入手一台支持Mesh组网的WiFi7路由系统以彻底解决网络覆盖问题,最终选择了一款功能非常... 自2023年WiFi 7技术标准(IEEE 802.11be)正式落地以来,这项第七代无线网络技术就以超高速

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio