首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:如何检测设备是WiFi还是WiFi+Cellular

安卓:如何检测设备是WiFi还是WiFi+Cellular
EN

Stack Overflow用户
提问于 2013-06-07 02:37:35
回答 2查看 7.6K关注 0票数 9

有没有办法检查用户是否正在使用手机连接的设备(这主要适用于平板电脑)?也就是说,智能手机通常带有内置Wi-Fi和蜂窝网络,但有些平板电脑只有Wi-Fi。如何知道运行应用程序的是哪种类型的设备?

我尝试了以下几种方法,但没有结果:

代码语言:javascript
复制
cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE);
wifi = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI);

if (cell) tv_1.setText("The tablet has cellular");
   else tv_1.setText("The tablet does not have cellular");
if (wifi) tv_2.setText("The tablet has wifi");
   else tv_2.setText("The tablet does not have wifi");

问题是,这两种比较总是返回true,即使它是一台没有电池的平板电脑。

我只需要知道设备是否有SIM卡插槽(型号带有蜂窝),或者它是一个只有WiFi的型号,这是可能的吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-07 02:41:09

下面是我的代码的摘录(到目前为止它是有效的):

代码语言:javascript
复制
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mWifi!=null) isOnWifi = mWifi.isConnected();
if (mEthernet!=null) isOnEthernet = mEthernet.isConnected();
if (m3G!=null) is3G = m3G.isConnected();
票数 7
EN

Stack Overflow用户

发布于 2014-12-03 01:06:59

如果目标是确定是否对连接进行了计量,则应致电ConnectivityManager.isActiveNetworkMetered(),或者如果需要旧设备支持,请致电ConnectivityManagerCompat.isActiveNetworkMetered()

有关响应不同连接类型的背景知识,请参阅Managing Network Usage (尽管要注意该文档的problem of not using isActiveNetworkMetered())。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16969636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档