如何知道我的android设备是否已连接到VoWIFI(Wifi语音)

时间:2019-03-27 16:21:35

标签: java android wifi telephonymanager wifimanager

我正在开发一个android应用程序,以获取有关网络的一些信息。我曾经与TelephonyManager一起使用来获取设备连接到的网络类型。我成功地获得了有关2G,3G,4G的信息。现在,我想知道是否已连接到VoWIFI。

我尝试查看android文档:https://developer.android.com/reference/android/net/wifi/WifiInfo.html 找出从何处获取此信息,但我找不到它。

我为2G,3G,4G做的事情:

 public String getNetworkClass() {
        TelephonyManager mTelephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
        int networkType = mTelephonyManager.getNetworkType();
        switch (networkType) {
            case TelephonyManager.NETWORK_TYPE_GPRS:
            case TelephonyManager.NETWORK_TYPE_EDGE:
            case TelephonyManager.NETWORK_TYPE_CDMA:
            case TelephonyManager.NETWORK_TYPE_1xRTT:
            case TelephonyManager.NETWORK_TYPE_IDEN:
                return "2G";
            case TelephonyManager.NETWORK_TYPE_UMTS:
            case TelephonyManager.NETWORK_TYPE_EVDO_0:
            case TelephonyManager.NETWORK_TYPE_EVDO_A:
            case TelephonyManager.NETWORK_TYPE_HSDPA:
            case TelephonyManager.NETWORK_TYPE_HSUPA:
            case TelephonyManager.NETWORK_TYPE_HSPA:
            case TelephonyManager.NETWORK_TYPE_EVDO_B:
            case TelephonyManager.NETWORK_TYPE_EHRPD:
            case TelephonyManager.NETWORK_TYPE_HSPAP:
                return "3G";
            case TelephonyManager.NETWORK_TYPE_LTE:
                return "4G";
            default:
                return "Unknown";
        }
    }

1 个答案:

答案 0 :(得分:0)

您可以像这样检测您的应用程序是否已连接到互联网

  public class Utility {
  public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
  }
  }

然后您可以在任何这样的活动中调用它

  Utility.isNetworkAvailable(AnyActivity.this);

在清单文件中添加这些权限

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"></uses-permission>

另一种有趣的方法是创建一个BroadcastReceiver,以监听您的连接状态。

如果您想进一步探索这种方法,我可以为您写一个例子。