【问题标题】:Android: How to detect if a device is WiFi or WiFi+CellularAndroid:如何检测设备是 WiFi 还是 WiFi+Cellular
【发布时间】:2013-06-02 21:45:51
【问题描述】:

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

我尝试了以下没有结果:

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

问题是这两个比较总是返回真,即使它是没有蜂窝的平板电脑。

我只需要知道设备是否有 SIM 卡插槽(带蜂窝的型号)还是只有 WiFi 的型号,可以吗?

提前致谢。

【问题讨论】:

    标签: android networking network-programming android-wifi cellular-network


    【解决方案1】:

    如果目标是确定连接是否按流量计费,您应该致电ConnectivityManager.isActiveNetworkMetered(),或者如果需要旧设备支持,请致电ConnectivityManagerCompat.isActiveNetworkMetered()

    有关对不同连接类型做出反应的背景信息,请参阅 Managing Network Usage(尽管请注意该文档的 problem of not using isActiveNetworkMetered())。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我在一些设备上尝试过,似乎效果很好,至少对于我需要的。想来想去,还是挺合乎逻辑的。感谢您的帮助。
      • 如果您有有效的 3G 连接但数据连接已关闭,这将不起作用。
      • 好吧,也许我不明白你的意思,但我需要的是检测设备是否具有蜂窝数据功能,并据此启动一项或其他活动。我在您在此处描述的情况下进行了尝试,并且似乎可以正常工作。
      • @Manish 据我了解 Daniel 的需求,对他来说,关闭数据连接的 3G 设备是一样的,就好像根本没有 3G 功能一样。我的应用程序也是一样的。
      猜你喜欢
      • 1970-01-01
      • 2015-05-31
      • 2023-04-07
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      相关资源
      最近更新 更多