如何在Android程序中以编程方式检测移动热点功能的可用性?

19
我希望标题本身就能说明我的问题...
例如,我们可以使用PackageManager来检查Wifi的可用性,如下所示:
packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI);

同样,在Android中有没有一种程序化的方式来检测移动热点功能的可用性呢?

谢谢。


由于没有任何API调用来开启/关闭wifi热点,我认为没有一般的方法/方式来检测热点的存在...但这只是我的猜测。 - unrealsoul007
我确定的是,Android热点使用没有官方API。您可能会发现这个WifiApManger类很有用。 - Navid Eivazzadeh
4个回答

4
我查阅了Google文档,发现如果设备支持WiFi P2P,则它显然也支持WiFi热点。
要检查设备是否支持Wi-Fi Direct / WiFi P2P,请按以下方式检查。
PackageManager m = getPackageManager();
     if (!m.hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
            // This device does support wifi P2P
        }

但是 Google 表示最好在广播接收器本身中检查此支持方式。
@Override
public void onReceive(Context context, Intent intent) {
    ...
    String action = intent.getAction();
    if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {
        int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
        if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
            // Wifi P2P is enabled
        } else {
            // Wi-Fi P2P is not enabled
        }
    }
    ...
}

请查看谷歌文档了解相关内容。


1
这可能是解决问题的第一步。
请参阅: {{link1:Android Wifi Hotspot Manager Class}}

谢谢!通过这个类,我们可以启用或禁用热点。但是如何检测它的可用性呢? - RuntimeException
2
尝试在不支持的设备上启用/禁用,并查看是否抛出任何异常。另请参见https://dev59.com/82ct5IYBdhLWcg3wCJF- - Douglas Nassif Roma Junior

0
你可以通过调用以下代码来检查这个问题:ConnectivityManager.isActiveNetworkMetered() 这将返回当前在Wifi热点连接中的活动连接。
我认为这对你有一点帮助。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接