安卓10源码开发定制(32)captive portal检测导致Wifi网络显示感叹不可访问原因分析和解决

在刷入lineageOS官网的小米5s plus刷机包后,发现WiFi图标显示叉号并提示“网络连接受限”,但实际上可以正常上网。经过研究,发现该问题是由于captive portal检测导致。通过查阅资料,找到了问题的原因及解决办法,具体解决方案可参考相关文章。
摘要由CSDN通过智能技术生成

最近在lineageOS官网下载小米5s plus手机的刷机包刷机开机之后连接wifiwifi图标显示叉号提示“网络连接受限”。但是实际上能上网。如下图所示:

图片

        刚出现这个叉号还以为手机不能上网,怀疑刷机包有问题。然后下载了魔趣10.0的刷机包验证一下,刷进去之后连接wifi没有显示任何符号。通过网上搜索查看相关资料,找到了原因和解决方法。

详细解决方法参考如下文章:

安卓10源码开发定制(32)captive portal检测导致Wifi网络显示感叹不可访问原因分析和解决

ESP32 Captive Portal是一种常见的物联网应用示例,主要用于设置新的设备连接到网络时自动显示一个网页界面,引导用户输入WiFi密码。这是一种简单的接入点配置机制,常用于原型开发、家庭自动化等场景。 在ESP32上实现Captive Portal通常需要以下几个步骤: 1. **硬件准备**:确保ESP32有足够的内存运行Web服务器,并且已经连接到了网络。 2. **固件配置**:使用MicroPython或其他支持HTTP服务器功能的环境,比如Espressif's ESP-IDF框架,配置ESP32作为HTTP服务器。 3. **HTML页面设计**:创建一个简单的HTML页面,包括网络名称、密码输入框以及登录按钮,当设备连接时显示这个页面。 4. **路由器设置**:在路由器设置中开启DHCP服务器,允许ESP32提供IP地址给新设备,并在获取IP后跳转到Captive Portal页面。 5. **代码编写**: - 使用`httpd`库(如uWebSockets)处理HTTP请求,接收来自客户端的POST请求(通常是提交了WiFi密码)。 - 当收到有效密码后,将设备配置到指定的网络,然后关闭Captive Portal,让设备可以访问互联网。 ```python import usocket as socket from http.server import BaseHTTPRequestHandler, HTTPServer class SimpleHTTPRequestHandler(BaseHTTPRequestHandler): def do_POST(self): content_length = int(self.headers['Content-Length']) post_data = self.rfile.read(content_length) # 检查并解析WiFi密码 if 'password' in post_data.decode(): self.send_response(200) self.end_headers() self.wfile.write(b"Access granted!") # 配置设备至目标网络... else: self.send_error(401) def run_captive_portal(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler): server_address = ('', 80) httpd = server_class(server_address, handler_class) print('Starting captive portal...') httpd.serve_forever() run_captive_portal() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaomaNo01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值