AOSP8.1-解决提示“网络已连接,但是无法访问互联网”的问题

729 阅读1分钟

这个问题相信大家都遇到过,明明网络连接正常,也可以正常上网,但是系统还是会弹出提示,并且wifi和数据的图标下面还会有一个叉号,如下图:

其实不光在AOSP上面,在google自己的原生系统上面,也会遇到,其本质原因是:

系统在连接到网络后,会尝试验证网络的连通性,而默认的验证地址是www.google.com/generate_20…

因为不可抗拒的原因,这个地址在国内是无法访问的,所以就会出现上诉的情况。

解决办法就是修改为我们国内的地址:

修改源码

1.打开frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java

2.找到下面代码

private static final String DEFAULT_HTTPS_URL     = "https://www.google.com/generate_204";
private static final String DEFAULT_HTTP_URL      =
	"http://connectivitycheck.gstatic.com/generate_204";
private static final String DEFAULT_FALLBACK_URL  = "http://www.google.com/gen_204";
private static final String DEFAULT_OTHER_FALLBACK_URLS =
	"http://play.googleapis.com/generate_204";

3.将DEFAULT_HTTPS_URL的值改为

www.qualcomm.cn/generate_20…

3.将DEFAULT_HTTP_URLDEFAULT_FALLBACK_URL的值改为

www.qualcomm.cn/generate_20…

刷入设备

1.cd 到 frameworks/base/services/java/ 目录下,执行mm命令编译

2.编译完成后,会在 out/target/product/xxx/system/framework/ 目录下生成一个services.jar文件

3.连接手机,将生成的services.jar文件刷入到设备

具体刷入步骤如下:

adb remount
adb push services.jar /system/framework/