android去感叹号

 admin   2022-09-24 17:25   87 人阅读  0 条评论

第二次增容android5.1的 WIFI更动小机能

Wifi 源标识符的有关方向产品目录

packages/apps/Settings/src/com/Android/settings/wifi/

frameworks/base/wifi/java/android/net/wifi/

frameworks/base/services/core/java/com/android/server/connectivity

frameworks/opt/net/wifi/service/java/com/android/server/wifi/

frameworks/base/core/

机能定位再者依照萤幕的马萨省,另再者看logcat抓取的重要信息,由此会找出管用的。Logcat会说你许多破绽。除了是有关标识符原产产品目录。会用腾讯Google搜寻重要信息,android5.1 wifi、

wifi_no_internet、No Internet Access Detected, won\’t automatically reconnect……………

1、Framework层加打印重要信息具体来说新闻稿子程序import android.util.Log;和TAG与否有。

在加打印重要信息时,特别注意每边边线,比如无法在return XX 上面,和特别注意表达式的中文名称Sitapur化,第一类Sitapur。numNoInternetAccessRepor或是XXX.umNoInternetAccessReports

根本无法缩编吗?

2、packages/apps/Settings/res/ 下是萤幕显示的字符串重要信息资源,

No Internet Access Detected, won\’t automatically reconnect. 可以在

packages/apps/Settings/src 下搜寻Wifi_no_internet 字符串。在哪里打印的出 summary.append(context.getString(R.string.wifi_no_internet));

else if (mConfig != null && mConfig.hasNoInternetAccess())

再跟踪mConfig.hasNoInternetAccess() 函数,

public boolean hasNoInternetAccess() {

Return numNoInternetAccessReports > 0 && !validatedInternetAccess;

}

再跟踪numNoInternetAccessReports,在这点,分了多个方向,需要分析语法,最有可能走那一块。

执行命令 grep numNoInternetAccessReports -rn http://www.csdn.net/tags/frameworks/

目标在方向如下所示:frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java +7648

需要研究这个函数public boolean processMessage(Message message) {}

查找这个函数 networkStatus()的调用之处。

在frameworks/base/core/java/android/net/NetworkAgent.java +194 case CMD_REPORT_NETWORK_STATUS: {

if (VDBG) {

log(CMD_REPORT_NETWORK_STATUS( +

(msg.arg1 == VALID_NETWORK ? VALID) : INVALID)));

}

networkStatus(msg.arg1);

接着跟踪MD_REPORT_NETWORK_STATUS 在

frameworks/base/services/core/java/com/android/server/ConnectivityService.java +1988

接着跟踪 case NetworkMonitor.EVENT_NETWORK_TESTED在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +360

查找这个类private class OfflineState extends State

private final State mOfflineState = new OfflineState()

再查找mOfflineState在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +487

研究transitionTo(mOfflineState) 这个函数

根本原因是由于isCaptivePortal()这个函数,定义之处方向在

frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java +635

查阅资料是去尝试访问android的一个网址,依照http返回来的值来判断网络与否连接通,其中返回为204时为正常,但由于国内屏蔽了这个网址,故在中国这个机能不适用,所以wifi信号有叹号这个标志。

解决办法是if (!mIsCaptivePortalCheckEnabled) return 204 让这句成立,跟踪标识符 调用之处在

mIsCaptivePortalCheckEnabled = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 1) == 1;

跟踪Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED

方向在

android-5.1-m200-mr1/frameworks/base/core/java/android/provider/Settings.java +6175

依照提示说明把上面的宏改成0即可关掉这个机能。我们遵循不改动android源标识符的原则,不直接改动,

在/frameworks/base/packages/SettingsProvider/res/values/defaults.xml 中添加这样一句话

1

在frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +2648

添加loadIntegerSetting(stmt, Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, R.integer.def_captive_portal_detection_enabled);

frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java 这个文件是用来生成setting.db的。

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

一般把setting.db中各个表的出厂默认初始值放在这个文件中,在DatabaseHelper.java 中读取。

接着在自己厂商的设备配置文件中添加device/ingenic/dorado/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml

在这里面可以重新给宏初始化为0这个值,在编译时先编译android源标识符,之后再编译到这边,这样可以把之前的给覆盖掉,以后在看标识符时能清楚地之道android默认配置是打开的为1。

0

本文地址:http://51ac.top/post/30252.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?