监控Android中的热点状态

Tri*_*yen 6 android broadcastreceiver android-intent

我是android的新手.
我想通过broadcastreceiver(onReceive)接收信息,知道如果用户启用/禁用"Portable Wi-Fi Hotspot" (Settings->Wireless &Networks->Tethering & portable hotspot).
检查此链接 我发现有" android.net.wifi.WIFI_AP_STATE_CHANGED"但它被设置为隐藏.我怎么可以用那个???

提前致谢

ρяσ*_*я K 23

要接收启用/禁用"便携式Wi-Fi热点"事件,您需要将接收器注册为WIFI_AP_STATE_CHANGED,如下所示:

mIntentFilter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED");
registerReceiver(mReceiver, mIntentFilter);
Run Code Online (Sandbox Code Playgroud)

在BroadcastReceiver onReceive里面我们可以使用wifi_stateas 提取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
            }

        }
    }
};
Run Code Online (Sandbox Code Playgroud)

您可以通过在AndroidManifest中声明Receiver进行android.net.wifi.WIFI_AP_STATE_CHANGED操作并同时包含所有必需的wifi权限来执行相同的操作AndroidManifest.xml

编辑:

在AndroidManifest中添加接收器为:

<receiver android:name=".WifiApmReceiver">
    <intent-filter>
        <action android:name="android.net.wifi.WIFI_AP_STATE_CHANGED" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

你可以看到这个例子以获得更多帮助

  • 从intent.getIntExtra("wifi_state",0)接收的wifi_state具有10-13范围内的值.这些值超出了WifiManager类中定义的wifi_state值 - http://developer.android.com/reference/android/net/wifi/WifiManager.html.我们如何知道启用或禁用wifi热点的时间?更确切地说,我们应该检查wifi_state值以获取此信息? (2认同)