美文网首页
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