在Android中监控热点状态

在Android中监控热点状态,android,android-intent,broadcastreceiver,Android,Android Intent,Broadcastreceiver,我是android新手。 我想通过broadcastreceiver(onReceive)接收信息,以了解如果用户启用/禁用“便携式Wi-Fi热点”(设置->无线和网络->栓系和便携式热点) 检查这个 我发现有“android.net.wifi.wifi\u AP\u STATE\u已更改”,但设置为隐藏。有什么我可以用的吗 提前感谢要接收启用/禁用“便携式Wi-Fi热点”事件,您需要为WIFI注册一个接收器\u AP\u STATE\u更改为: mIntentFilter = new Inte

我是android新手。
我想通过
broadcastreceiver
onReceive
)接收信息,以了解如果用户启用/禁用
“便携式Wi-Fi热点”
(设置->无线和网络->栓系和便携式热点)

检查这个 我发现有“
android.net.wifi.wifi\u AP\u STATE\u已更改”
,但设置为隐藏。有什么我可以用的吗

提前感谢

要接收启用/禁用“便携式Wi-Fi热点”事件,您需要为WIFI注册一个接收器\u AP\u STATE\u更改为:

mIntentFilter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED");
registerReceiver(mReceiver, mIntentFilter);
在BroadcastReceiver onReceive内部,我们可以使用
wifi\u state
提取wifi热点状态,如下所示:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if ("android.net.wifi.WIFI_AP_STATE_CHANGED".equals(action)) {

             // get Wi-Fi Hotspot state here 
            int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);

            if (WifiManager.WIFI_STATE_ENABLED == state % 10) {
                // Wifi is enabled
            }

        }
    }
};
您可以通过在AndroidManifest中声明android.net.wifi.wifi\u AP\u STATE\u已更改的操作的接收器来执行相同的操作,还可以在AndroidManifest.xml

编辑:

在AndroidManifest中将接收方添加为:

<receiver android:name=".WifiApmReceiver">
    <intent-filter>
        <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
    </intent-filter>
</receiver>


有关更多帮助的示例

Hii#user802467此链接上的评论中询问的问题有答案:。由于版本4及以上,值介于10-13之间。您可以轻松获得链接中解释的实际状态。

感谢您的快速评论。但是你能告诉我如何在android清单中声明吗,因为它更容易理解。已经添加了你的代码,它错误地指出“类型意图中的方法getIntExtra不适用于参数(String,String)”@TrisNguyen:检查我的编辑答案并传递任何默认整数value@TrisNguyen:和u也可以使用
int state=intent.getInt(“wifi_state”)而不是
int state=intent.getIntExtra(“wifi_状态”,0)从intent接收的wifi_状态。getIntExtra(“wifi_状态”,0)的值范围为10-13。这些值不在WifiManager类中定义的wifi_状态值范围内-。我们如何知道何时启用或禁用wifi热点?更准确地说,我们应该检查什么wifi_状态值来获取此信息?