背景
原生sdk连接portal网络后,会在状态栏弹出“登录到Wlan网络”的通知,下来状态栏也会有此消息,但不会自动跳转到验证登录界面,下面代码就是实现自动跳转登录界面的代码
实现方法
1.刚开始在csdn找到通过浏览器实现自动跳转到登录界面,经验证确实是可以的,方法链接如下:
【定制Android系统】Android 7.1 实现连接 Captive Portal WiFi 时自动弹出登录页面
但我们的客户是不内置浏览器的,所以只能用其他方法了
2.通过查看源码frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java
发现了一个更简单的方法,把点击通知栏“登录到Wlan网络”跳转到登录界面的操作(这里实际是启动了CaptivePortalLogin.apk,CaptivePortalLogin使用的是webwiew),直接在代码里启动就好了。
补丁如下:
--- a/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java
+++ b/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java
@@ -75,6 +75,10 @@ import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
+// start captive portal enable by lpz 20210701
+import android.os.SystemProperties;
+// end captive portal enable by lpz 20210701
+
/**
* {@hide}
*/
@@ -86,10 +90,16 @@ public class NetworkMonitor extends StateMachine {
// Default configuration values for captive portal detection probes.
// TODO: append a random length parameter to the default HTTP