美文网首页
android 5.1.1 setWifiApEnabled d

android 5.1.1 setWifiApEnabled d

作者: ProgZack | 来源:发表于2017-09-10 00:00 被阅读96次

问题

在android 5.1 rk3229平台上使用wifiManager.setWifiApEnabled函数无法开启WiFiAP

尝试与结果

1.用远程桌面进入settings,通过UI开启ap可以成功
结论:可能是权限问题
2.检查了permission 和签名,添加了system shareUserId
结论:仍然打不开
3.查看/packages/apps/Settings的源码,负责启动AP tethering的文件叫WifiApEnabler.java
对比自己当前的代码,区别只有:

        if (enable && ((wifiState == WifiManager.WIFI_STATE_ENABLING) ||
                    (wifiState == WifiManager.WIFI_STATE_ENABLED))) {
            mWifiManager.setWifiEnabled(false);
            Settings.Global.putInt(cr, Settings.Global.WIFI_SAVED_STATE, 1);
        }

Settings.Global.putInt(cr, Settings.Global.WIFI_SAVED_STATE, 1);
结论:AP就这样起来了
为什么写入一个settings就可以了呢?源码注释中这么写:

       /**
        * Used to save the Wifi_ON state prior to tethering.
        * This state will be checked to restore Wifi after
        * the user turns off tethering.
        *
        */

确实这个WifiApEnabler这个类在关闭AP的时候,检查了这个settings并尝试恢复Wifi状态
然而,还是没明白为什么一个settings能导致AP起不来。法克

相关文章

网友评论

      本文标题:android 5.1.1 setWifiApEnabled d

      本文链接:https://www.haomeiwen.com/subject/kcsnjxtx.html