【问题标题】:How to know device is connected to Wifi or 3G, programatically如何以编程方式知道设备已连接到 Wifi 或 3G
【发布时间】:2016-06-25 04:48:13
【问题描述】:

我如何知道设备是否以编程方式连接到 Wifi 或 3G

谢谢

【问题讨论】:

    标签: android android-emulator


    【解决方案1】:

    你可以使用here提到的WifiManager类

    编辑: 通过调用WifiManager类的getConnectionInfo()函数你会得到WifiInfo对象

    WifiInfo 具有 getBSSID() 函数,可以为您提供连接的 AP 名称

    如果它为空,则表示它没有通过 Wifi 连接到任何 AP(未启用 Wifi)

    顺便说一句,在寻找更多信息时,我找到了this,它应该可以回答您关于移动连接和 wifi 连接的所有问题

    【讨论】:

    • 该链接显示有关 wifi 连接是否可用。我怎么知道 3G/2G 是用来连接的。谢谢,
    • 我在那个链接中看到这个词“如果设备是通过手机连接的”这是什么意思?这意味着通过3G / 2G?请告诉我谢谢
    • 不确定如何使用 sdk 判断其是否连接到 3G/2G
    • 在我的 T-Mobile G2X 上,这种方法不可靠。即使当前未连接,它也会返回最后连接的网络(我认为)。该答案的作者在他的最后一段作品中提供的链接。我们可以假设它在大多数设备上都是一致的吗?
    【解决方案2】:

    这是我的工作示例:

    public boolean isNetworkTypeMobile() {
        final ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        return (cm!=null && cm.getActiveNetworkInfo()!=null && isNetworkTypeMobile(cm.getActiveNetworkInfo().getType()));
    }
    
    public static boolean isNetworkTypeMobile(int networkType) {
        switch (networkType) {
            case ConnectivityManager.TYPE_MOBILE: //0
            case ConnectivityManager.TYPE_MOBILE_MMS: //2
            case ConnectivityManager.TYPE_MOBILE_SUPL: //3
            case ConnectivityManager.TYPE_MOBILE_DUN: //4
            case ConnectivityManager.TYPE_MOBILE_HIPRI: //5
            case 10:
            case 11:
            case 12:
            case 14:
                return true;
            default:
                return false;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多