分類
Android

三星新版 firmware 已解決將 HK 視為 isChineseIso() 的問題

經檢視10月23日早上推出下載的最新版 Galaxy Note20 Ultra 5G firmware(港版,N9860ZSU1ATJ6,10月20日),已解決所有已知將 HK 視為 isChineseIso()的問題。

不過一如所料,三星始終沒有正面回應,承認或否認有關問題(即使旗艦機款已就同屬 9 月的 security patch level 收到第 3 次更新)。

Part 2Part 3 所列的isChineseIso()已被改回只包括 cn 而不包括 hk 及 mo。因此香港的 firmware 在香港網絡運作不會再被特別處理,除非是 Part 3 所述 Wifi-only 平板的情況,更新到 10月20日 的 firmware 後不會再自動查詢或連接 qq.com 及 baidu.com 等。

WifiConnectivityMonitorNetworkMonitor

private boolean isChineseIso(String countryIso) {
    return "cn".equalsIgnoreCase(countryIso);
}

而 Part 3 提及的 checkCountryCodeFromScanResults() 亦已改為只對 CN 的 Accsss Point 作特別處理。

int winnerCount = 0;
if (countryCodeMap.containsKey("CN")) {
    cnCount = countryCodeMap.get("CN").intValue();
}
String pollWinner = "";
String stat = "";
for (String c : countryCodeMap.keySet()) {
    stat = (stat + c + ": " + countryCodeMap.get(c)) + "  ";
    if (countryCodeMap.get(c).intValue() > winnerCount || (countryCodeMap.get(c).intValue() >= winnerCount && "CN".equals(c))) {
        pollWinner = c;
        winnerCount = countryCodeMap.get(c).intValue();
    }
}
String currentTime = "" + (System.currentTimeMillis() / 1000);
try {
    currentTime = new SimpleDateFormat("MM-dd HH:mm:ss.SSS", Locale.US).format(new Date());
} catch (RuntimeException e) {
}
...
if (winnerCount >= 5) {
    if ("CN".equals(pollWinner)) {
        mLastChinaConfirmedTime = System.currentTimeMillis();
    }
    if ("CN".equals(this.mCountryCodeFromScanResult) && !"CN".equals(pollWinner)) {
        long remainingTime = 86400000 - (System.currentTimeMillis() - mLastChinaConfirmedTime);
        if (remainingTime < 0) { sb.append(" | Updated [CN 24 hours expired] - CN -> " + pollWinner);
            mCountryCodeFromScanResult = pollWinner;
            Settings.Global.putString(this.mContext.getContentResolver(), "wifi_wcm_country_code_from_scan_result", mCountryCodeFromScanResult);
        } else {
            sb.append("  |  Country Code changed but not updated - CN -X-> " + pollWinner + " , maintain CN for next " + (remainingTime / 1000) + " seconds");
        }
    } else if (!pollWinner.equals(this.mCountryCodeFromScanResult)) {
        sb.append("  |  Updated - " + this.mCountryCodeFromScanResult + "->" + pollWinner);
        mCountryCodeFromScanResult = pollWinner;
        Settings.Global.putString(mContext.getContentResolver(), "wifi_wcm_country_code_from_scan_result", mCountryCodeFromScanResult);
    }
}

但注意若附近有較多來自大陸的 access point 的話,用 WiFi-only 的 Galaxy Tab 仍有可能受 Part 3 所指的問題影響。

在〈三星新版 firmware 已解決將 HK 視為 isChineseIso() 的問題〉中有 2 則留言

感謝headuck CHing keep住跟進呢件事,但由始至終Samsung都冇正面或者積極地回應,而係用冷處理嘅方式,令我有啲失望。點都好,有修正返起碼好過咩都唔做,亦都希望其他手機廠商唔好犯同樣嘅錯誤。

這事的重點在於三星背後有沒有刻意的取向,但不能因她冰冷的態度就斷然判斷,畢竟那可能真的是她自以為恰當的錯誤處理手法,源自於她內部的官僚或不認錯的文件。但要問的是: 這類程式碼有其需要性嗎???

如果用戶沒有指定DNS,那按系統默認設定,讓手機自動從當地電訊商取得DNS就可以了。若然因用戶設定了自己的DNS,以致進入大陸時上不了網,這也是用戶自己問題,三星不用理會。未知有沒有其他真實需要讓她引入這類程式碼?!

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *