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

 2021-04-27 

How to detect mobile hotspot feature availability in Android programmatically?

我希望标题本身能说明我的问题是什么...

例如,我们可以使用PackageManager来检查Wifi可用性,例如

1
packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI);

类似地,有什么方法可以以编程方式检测Android中的移动热点功能的可用性吗?

谢谢。


我浏览了google文档,发现如果设备支持wifi P2P,那么它显然支持wifi热点

通过设备检查Wi-Fi Direct / wifi P2P,然后以这种方式检查

1
2
3
4
PackageManager m = getPackageManager();
     if (!m.hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT)) {
            // This device does support wifi P2P
        }

但是Google表示最好以这种方式在您的广播接收器中检查这种支持

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@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
        }
    }
    ...
}

检查google文档是否相同


这也许是解决方案的第一步。

请参阅:
Android Wifi热点管理器类


您可以通过调用ConnectivityManager.isActiveNetworkMetered()来访问此信息。

这将返回活动连接是否是热点(如"数据使用量"->"移动热点"中所定义)。

在类似问题上,这是一个很好的答案!!!
如何检测网络是否是Android上的移动热点(配置为)?


您可以通过调用以下命令进行检查:ConnectivityManager.isActiveNetworkMetered()

这将返回或不返回Wifi热点中的当前活动连接。

我认为这对您有所帮助。