【问题标题】:Monitoring the Hotspot state in Android监控 Android 中的热点状态
【发布时间】:2013-02-04 05:39:25
【问题描述】:

我是安卓新手。
我想通过broadcastreceiver (onReceive) 接收信息,以了解用户是否启用/禁用"Portable Wi-Fi Hotspot" (Settings->Wireless &Networks->Tethering & portable hotspot)
检查这个link 我发现有“android.net.wifi.WIFI_AP_STATE_CHANGED”但它被设置为隐藏。有什么办法可以使用吗???

提前致谢

【问题讨论】:

    标签: android android-intent broadcastreceiver


    【解决方案1】:

    要接收启用/禁用“便携式 Wi-Fi 热点”事件,您需要将 WIFI_AP_STATE_CHANGED 的接收器注册为:

    mIntentFilter = new IntentFilter("android.net.wifi.WIFI_AP_STATE_CHANGED");
    registerReceiver(mReceiver, mIntentFilter);
    

    在 BroadcastReceiver onReceive 中,我们可以使用 wifi_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_AP_STATE_CHANGED 操作声明 Receiver 来执行相同操作,并在 AndroidManifest.xml 中包含所有必要的 wifi 权限

    编辑:

    在 AndroidManifest 中添加接收器为:

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

    您可以查看this 示例以获得更多帮助

    【讨论】:

    • 感谢您的快速评论。但是你能告诉我如何在 android manifest 中声明,因为它更容易理解。
    • 已经添加了你的代码,它会报错“类型意图中的 getIntExtra 方法不适用于参数(字符串,字符串)”。
    • @TrisNguyen:检查我的编辑答案并传递任何默认整数值
    • @TrisNguyen : 你也可以使用int state = intent.getInt("wifi_state"); 代替int state = intent.getIntExtra("wifi_state", 0);
    • wifi_state 从 intent.getIntExtra("wifi_state", 0) 收到的值在 10-13 范围内。这些值在此处定义的 WifiManager 类中的 wifi_state 值之外 - developer.android.com/reference/android/net/wifi/…。我们如何知道何时启用或禁用 wifi 热点?更准确地说,我们应该检查什么 wifi_state 值来获取这些信息?
    【解决方案2】:

    您好#user802467 在此链接的评论中回答了您的问题:How to get wifi hotspot state。由于版本 4 及更高版本,值介于 10-13 之间。您可以按照链接中的说明轻松获取实际状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多