Android13 wifi设置国家码详解
Android13 wifi设置国家码详解
文章目录
- Android13 wifi设置国家码详解
- 一、前言
- 二、设置wifi国家码相关代码
- 1、adb或者串口也能设置和获取当前国家码
- (1)查询命令的方式
- (2)获取和设置国家码的示例
 
- 2、Java代码设置国家码
- 3、获取当前语言
 
- 三、其他
- 1、小结
- 2、Android 使用adb操作WiFi连接扫描等相关指令
- 3、国家码字符串大全
 
 
- PS: 把每一天的烟火气,都酿成热爱的诗 .
一、前言
wifi设置国家码有啥用?国外产品有些地区的产品需要设置wifi国家码的。
-  场景:手机、平板等设备在不同国家 / 地区销售时,需符合当地无线电管理法规(如中国的 SRRC 认证、欧盟的 CE 认证、美国的 FCC 认证)。 
-  需求:通过设置国家码,强制设备使用当地允许的 Wi-Fi 频段(如: - 中国:2.4GHz 频段(1-13 信道),5GHz 频段(36-64、149-165 信道);
- 美国:2.4GHz(1-11 信道),5GHz(36-165 信道,含 DFS 信道);
- 日本:2.4GHz(1-14 信道))。
 
-  作用:避免因频段违规导致产品无法上市或面临法律风险。 
简单的说就是不同国家的网络无线认证,需要设置支持哪些wifi信道和热点信道。
比如,日本目前不支持5G信道,那么出售日本的手机就需要支持设置日本语言后,
不能连接5G信道的wifi和热点,并且手机上也不能释放5G的热点。
设置国家码的作用就是让上层和底层都知道当前国家码的值,并且做成相应处理。
网上使用豆包等AI工具设置的国家码的代码都是不对的,可能是比较旧版本的Android代码的实现,
本文的设置国家码代码实现是基于Android11之后的,是目前的主流代码。
WifiManager.setCountryCode 在Android13 之后的代码是没有的,可以使用另外的方法。
本文主要介绍wifi国家码的设置相关内容。
关于设置国家码后如何适配认证,后续再介绍。
二、设置wifi国家码相关代码
1、adb或者串口也能设置和获取当前国家码
(1)查询命令的方式
255|console:/ # cmd wifi | grep country //获取国家码相关命令                        get-country-code  //获取当前国家码信息Gets country code as a two-letter stringforce-country-code enabled <two-letter code> | disabled //设置国家码Sets country code to <two-letter code> or left for normal valueor '00' for forcing to world mode country code
console:/ # 
cmd wifi 有大部分WifiManager的接口方法,比如Wifi 开关,连接,热点开关等命令,有兴趣的可以自己看看。
(2)获取和设置国家码的示例
console:/ # cmd wifi get-country-code //获取当前国家码信息
Wifi Country Code = US
console:/ # 
console:/ # cmd wifi force-country-code enabled JP //设置国家码,日本
console:/ # cmd wifi get-country-code                                          
Wifi Country Code = JP
console:/ # cmd wifi force-country-code enabled CN //设置国家码,中国
console:/ # cmd wifi get-country-code                                          
Wifi Country Code = CN
console:/ # cmd wifi force-country-code enabled DD   //设置国家码,随便设
console:/ # cmd wifi get-country-code                                          
Wifi Country Code = DD
console:/ # 
上面可以看到随便设置国家码的字符都能生效,但是framework和底层会自己判断后执行具体操作。
2、Java代码设置国家码
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
//设置国家码
wifiManager.setOverrideCountryCode(String countryCode); //比如:"CN"
//获取国家码
String wifiCountry = wifiManager.getCountryCode();//当前系统语言的国家码
String countryCode = Locale.getDefault().getCountry(); //比如:US,CN
String countryName = Locale.getDefault().getDisplayCountry(); // 可读名称(如“中国”)
WifiManager设置wifi国家码,需要系统签名应用,并且声明权限:
android.Manifest.permission.MANAGE_WIFI_COUNTRY_CODE
那么什么时候设置国家码呢?
其实是在切换国家语言的时候进行设置就行。
3、获取当前语言
可以在监听到广播后获取当前国家码,然后设置wifi国家码;
切换国家语言的时候是有广播:Intent.ACTION_LOCALE_CHANGED;
String localeCountry = Locale.getDefault().getCountry();
上面代码返回的字符串,就是语言对应的国家码,wifi的国家码就是要设置这个字符串。
三、其他
1、小结
Android设置wifi国家码,可以通过cmd命令设置获取;
也可以通过Java代码WifiManager.setOverrideCountryCode的接口设置;
系统默认不会设置wifi的国家码,需要自己在接收语言切换广播
或者特定需求下获取当前语言的国家码和设置wifi国家码。
国家码字符串正规都是大写的,如果设置的是小写的字母,重新获取也是返回的大写字符串。
2、Android 使用adb操作WiFi连接扫描等相关指令
Android系统自带有组很强大的shell指令集,
这里记录下平时使用的cmd wifi 相关指令。
系统初期开发或者定位一下wifi、热点问题会比较有用。
https://blog.csdn.net/wenzhi20102321/article/details/140043930
3、国家码字符串大全
以下是 ISO 3166-1 alpha-2 标准的国家和地区代码列表(按字母顺序排列),包含250 个条目:
国家 / 地区代码表(带序号):
| 序号 | 代码 | 国家 / 地区名称(中文) | 国家 / 地区名称(英文) | 
|---|---|---|---|
| 1 | AD | 安道尔 | Andorra | 
| 2 | AE | 阿拉伯联合酋长国 | United Arab Emirates | 
| 3 | AF | 阿富汗 | Afghanistan | 
| 4 | AG | 安提瓜和巴布达 | Antigua and Barbuda | 
| 5 | AI | 安圭拉 | Anguilla | 
| 6 | AL | 阿尔巴尼亚 | Albania | 
| 7 | AM | 亚美尼亚 | Armenia | 
| 8 | AO | 安哥拉 | Angola | 
| 9 | AQ | 南极洲 | Antarctica | 
| 10 | AR | 阿根廷 | Argentina | 
| 11 | AS | 美属萨摩亚 | American Samoa | 
| 12 | AT | 奥地利 | Austria | 
| 13 | AU | 澳大利亚 | Australia | 
| 14 | AW | 阿鲁巴 | Aruba | 
| 15 | AX | 奥兰群岛 | Åland Islands | 
| 16 | AZ | 阿塞拜疆 | Azerbaijan | 
| 17 | BA | 波斯尼亚和黑塞哥维那 | Bosnia and Herzegovina | 
| 18 | BB | 巴巴多斯 | Barbados | 
| 19 | BD | 孟加拉国 | Bangladesh | 
| 20 | BE | 比利时 | Belgium | 
| 21 | BF | 布基纳法索 | Burkina Faso | 
| 22 | BG | 保加利亚 | Bulgaria | 
| 23 | BH | 巴林 | Bahrain | 
| 24 | BI | 布隆迪 | Burundi | 
| 25 | BJ | 贝宁 | Benin | 
| 26 | BL | 圣巴泰勒米 | Saint Barthélemy | 
| 27 | BM | 百慕大 | Bermuda | 
| 28 | BN | 文莱达鲁萨兰国 | Brunei Darussalam | 
| 29 | BO | 玻利维亚(多民族国) | Bolivia, Plurinational State of | 
| 30 | BQ | 博内尔、圣尤斯特歇斯和萨巴 | Bonaire, Sint Eustatius and Saba | 
| 31 | BR | 巴西 | Brazil | 
| 32 | BS | 巴哈马 | Bahamas | 
| 33 | BT | 不丹 | Bhutan | 
| 34 | BV | 布维岛 | Bouvet Island | 
| 35 | BW | 博茨瓦纳 | Botswana | 
| 36 | BY | 白俄罗斯 | Belarus | 
| 37 | BZ | 伯利兹 | Belize | 
| 38 | CA | 加拿大 | Canada | 
| 39 | CC | 科科斯(基林)群岛 | Cocos (Keeling) Islands | 
| 40 | CD | 刚果民主共和国 | Congo, the Democratic Republic of the | 
| 41 | CF | 中非共和国 | Central African Republic | 
| 42 | CG | 刚果共和国 | Congo | 
| 43 | CH | 瑞士 | Switzerland | 
| 44 | CI | 科特迪瓦 | Côte d’Ivoire | 
| 45 | CK | 库克群岛 | Cook Islands | 
| 46 | CL | 智利 | Chile | 
| 47 | CM | 喀麦隆 | Cameroon | 
| 48 | CN | 中国 | China | 
| 49 | CO | 哥伦比亚 | Colombia | 
| 50 | CR | 哥斯达黎加 | Costa Rica | 
| 51 | CU | 古巴 | Cuba | 
| 52 | CV | 佛得角 | Cabo Verde | 
| 53 | CW | 库拉索 | Curaçao | 
| 54 | CX | 圣诞岛 | Christmas Island | 
| 55 | CY | 塞浦路斯 | Cyprus | 
| 56 | CZ | 捷克共和国 | Czech Republic | 
| 57 | DE | 德国 | Germany | 
| 58 | DJ | 吉布提 | Djibouti | 
| 59 | DK | 丹麦 | Denmark | 
| 60 | DM | 多米尼克 | Dominica | 
| 61 | DO | 多米尼加共和国 | Dominican Republic | 
| 62 | DZ | 阿尔及利亚 | Algeria | 
| 63 | EC | 厄瓜多尔 | Ecuador | 
| 64 | EE | 爱沙尼亚 | Estonia | 
| 65 | EG | 埃及 | Egypt | 
| 66 | EH | 西撒哈拉 | Western Sahara | 
| 67 | ER | 厄立特里亚 | Eritrea | 
| 68 | ES | 西班牙 | Spain | 
| 69 | ET | 埃塞俄比亚 | Ethiopia | 
| 70 | FI | 芬兰 | Finland | 
| 71 | FJ | 斐济 | Fiji | 
| 72 | FK | 福克兰群岛(马尔维纳斯) | Falkland Islands (Malvinas) | 
| 73 | FM | 密克罗尼西亚联邦 | Federated States of Micronesia | 
| 74 | FO | 法罗群岛 | Faroe Islands | 
| 75 | FR | 法国 | France | 
| 76 | GA | 加蓬 | Gabon | 
| 77 | GB | 英国 | United Kingdom | 
| 78 | GD | 格林纳达 | Grenada | 
| 79 | GE | 格鲁吉亚 | Georgia | 
| 80 | GF | 法属圭亚那 | French Guiana | 
| 81 | GG | 根西岛 | Guernsey | 
| 82 | GH | 加纳 | Ghana | 
| 83 | GI | 直布罗陀 | Gibraltar | 
| 84 | GL | 格陵兰 | Greenland | 
| 85 | GM | 冈比亚 | Gambia | 
| 86 | GN | 几内亚 | Guinea | 
| 87 | GP | 瓜德罗普 | Guadeloupe | 
| 88 | GQ | 赤道几内亚 | Equatorial Guinea | 
| 89 | GR | 希腊 | Greece | 
| 90 | GS | 南乔治亚岛和南桑威奇群岛 | South Georgia and the South Sandwich Islands | 
| 91 | GT | 危地马拉 | Guatemala | 
| 92 | GU | 关岛 | Guam | 
| 93 | GW | 几内亚比绍 | Guinea-Bissau | 
| 94 | GY | 圭亚那 | Guyana | 
| 95 | HK | 中国香港特别行政区 | Hong Kong Special Administrative Region of China | 
| 96 | HM | 赫德岛和麦克唐纳群岛 | Heard Island and McDonald Islands | 
| 97 | HN | 洪都拉斯 | Honduras | 
| 98 | HR | 克罗地亚 | Croatia | 
| 99 | HT | 海地 | Haiti | 
| 100 | HU | 匈牙利 | Hungary | 
| 101 | ID | 印度尼西亚 | Indonesia | 
| 102 | IE | 爱尔兰 | Ireland | 
| 103 | IL | 以色列 | Israel | 
| 104 | IM | 马恩岛 | Isle of Man | 
| 105 | IN | 印度 | India | 
| 106 | IO | 英属印度洋领地 | British Indian Ocean Territory | 
| 107 | IQ | 伊拉克 | Iraq | 
| 108 | IR | 伊朗伊斯兰共和国 | Iran, Islamic Republic of | 
| 109 | IS | 冰岛 | Iceland | 
| 110 | IT | 意大利 | Italy | 
| 111 | JE | 泽西岛 | Jersey | 
| 112 | JM | 牙买加 | Jamaica | 
| 113 | JO | 约旦 | Jordan | 
| 114 | JP | 日本 | Japan | 
| 115 | KE | 肯尼亚 | Kenya | 
| 116 | KG | 吉尔吉斯斯坦 | Kyrgyzstan | 
| 117 | KH | 柬埔寨 | Cambodia | 
| 118 | KI | 基里巴斯 | Kiribati | 
| 119 | KM | 科摩罗 | Comoros | 
| 120 | KN | 圣基茨和尼维斯 | Saint Kitts and Nevis | 
| 121 | KP | 朝鲜民主主义人民共和国 | Korea, Democratic People’s Republic of | 
| 122 | KR | 大韩民国 | Korea, Republic of | 
| 123 | KW | 科威特 | Kuwait | 
| 124 | KY | 开曼群岛 | Cayman Islands | 
| 125 | KZ | 哈萨克斯坦 | Kazakhstan | 
| 126 | LA | 老挝人民民主共和国 | Lao People’s Democratic Republic | 
| 127 | LB | 黎巴嫩 | Lebanon | 
| 128 | LC | 圣卢西亚 | Saint Lucia | 
| 129 | LI | 列支敦士登 | Liechtenstein | 
| 130 | LK | 斯里兰卡 | Sri Lanka | 
| 131 | LR | 利比里亚 | Liberia | 
| 132 | LS | 莱索托 | Lesotho | 
| 133 | LT | 立陶宛 | Lithuania | 
| 134 | LU | 卢森堡 | Luxembourg | 
| 135 | LV | 拉脱维亚 | Latvia | 
| 136 | LY | 利比亚 | Libya | 
| 137 | MA | 摩洛哥 | Morocco | 
| 138 | MC | 摩纳哥 | Monaco | 
| 139 | MD | 摩尔多瓦共和国 | Moldova, Republic of | 
| 140 | ME | 黑山 | Montenegro | 
| 141 | MF | 圣马丁(法属部分) | Saint Martin (French part) | 
| 142 | MG | 马达加斯加 | Madagascar | 
| 143 | MH | 马绍尔群岛 | Marshall Islands | 
| 144 | MK | 北马其顿 | North Macedonia | 
| 145 | ML | 马里 | Mali | 
| 146 | MM | 缅甸 | Myanmar | 
| 147 | MN | 蒙古 | Mongolia | 
| 148 | MO | 中国澳门特别行政区 | Macao Special Administrative Region of China | 
| 149 | MP | 北马里亚纳群岛 | Northern Mariana Islands | 
| 150 | MQ | 马提尼克 | Martinique | 
| 151 | MR | 毛里塔尼亚 | Mauritania | 
| 152 | MS | 蒙特塞拉特 | Montserrat | 
| 153 | MT | 马耳他 | Malta | 
| 154 | MU | 毛里求斯 | Mauritius | 
| 155 | MV | 马尔代夫 | Maldives | 
| 156 | MW | 马拉维 | Malawi | 
| 157 | MX | 墨西哥 | Mexico | 
| 158 | MY | 马来西亚 | Malaysia | 
| 159 | MZ | 莫桑比克 | Mozambique | 
| 160 | NA | 纳米比亚 | Namibia | 
| 161 | NC | 新喀里多尼亚 | New Caledonia | 
| 162 | NE | 尼日尔 | Niger | 
| 163 | NF | 诺福克岛 | Norfolk Island | 
| 164 | NG | 尼日利亚 | Nigeria | 
| 165 | NI | 尼加拉瓜 | Nicaragua | 
| 166 | NL | 荷兰 | Netherlands | 
| 167 | NO | 挪威 | Norway | 
| 168 | NP | 尼泊尔 | Nepal | 
| 169 | NR | 瑙鲁 | Nauru | 
| 170 | NU | 纽埃 | Niue | 
| 171 | NZ | 新西兰 | New Zealand | 
| 172 | OM | 阿曼 | Oman | 
| 173 | PA | 巴拿马 | Panama | 
| 174 | PE | 秘鲁 | Peru | 
| 175 | PF | 法属波利尼西亚 | French Polynesia | 
| 176 | PG | 巴布亚新几内亚 | Papua New Guinea | 
| 177 | PH | 菲律宾 | Philippines | 
| 178 | PK | 巴基斯坦 | Pakistan | 
| 179 | PL | 波兰 | Poland | 
| 180 | PM | 圣皮埃尔和密克隆 | Saint Pierre and Miquelon | 
| 181 | PN | 皮特凯恩 | Pitcairn | 
| 182 | PR | 波多黎各 | Puerto Rico | 
| 183 | PS | 巴勒斯坦国 | Palestine, State of | 
| 184 | PT | 葡萄牙 | Portugal | 
| 185 | PW | 帕劳 | Palau | 
| 186 | PY | 巴拉圭 | Paraguay | 
| 187 | QA | 卡塔尔 | Qatar | 
| 188 | RE | 留尼汪 | Réunion | 
| 189 | RO | 罗马尼亚 | Romania | 
| 190 | RS | 塞尔维亚 | Serbia | 
| 191 | RU | 俄罗斯联邦 | Russian Federation | 
| 192 | RW | 卢旺达 | Rwanda | 
| 193 | SA | 沙特阿拉伯 | Saudi Arabia | 
| 194 | SB | 所罗门群岛 | Solomon Islands | 
| 195 | SC | 塞舌尔 | Seychelles | 
| 196 | SD | 苏丹 | Sudan | 
| 197 | SE | 瑞典 | Sweden | 
| 198 | SG | 新加坡 | Singapore | 
| 199 | SH | 圣赫勒拿、阿森松和特里斯坦 - 达库尼亚 | Saint Helena, Ascension and Tristan da Cunha | 
| 200 | SI | 斯洛文尼亚 | Slovenia | 
| 201 | SJ | 斯瓦尔巴和扬马延 | Svalbard and Jan Mayen | 
| 202 | SK | 斯洛伐克 | Slovakia | 
| 203 | SL | 塞拉利昂 | Sierra Leone | 
| 204 | SM | 圣马力诺 | San Marino | 
| 205 | SN | 塞内加尔 | Senegal | 
| 206 | SO | 索马里 | Somalia | 
| 207 | SR | 苏里南 | Suriname | 
| 208 | SS | 南苏丹 | South Sudan | 
| 209 | ST | 圣多美和普林西比 | São Tomé and Príncipe | 
| 210 | SV | 萨尔瓦多 | El Salvador | 
| 211 | SX | 圣马丁(荷属部分) | Sint Maarten (Dutch part) | 
| 212 | SY | 阿拉伯叙利亚共和国 | Syrian Arab Republic | 
| 213 | SZ | 斯威士兰 | Eswatini | 
| 214 | TC | 特克斯和凯科斯群岛 | Turks and Caicos Islands | 
| 215 | TD | 乍得 | Chad | 
| 216 | TF | 法属南部领地 | French Southern Territories | 
| 217 | TG | 多哥 | Togo | 
| 218 | TH | 泰国 | Thailand | 
| 219 | TJ | 塔吉克斯坦 | Tajikistan | 
| 220 | TK | 托克劳 | Tokelau | 
| 221 | TL | 东帝汶 | Timor-Leste | 
| 222 | TM | 土库曼斯坦 | Turkmenistan | 
| 223 | TN | 突尼斯 | Tunisia | 
| 224 | TO | 汤加 | Tonga | 
| 225 | TR | 土耳其 | Turkey | 
| 226 | TT | 特立尼达和多巴哥 | Trinidad and Tobago | 
| 227 | TV | 图瓦卢 | Tuvalu | 
| 228 | TW | 中国台湾 | Taiwan, Province of China | 
| 229 | TZ | 坦桑尼亚联合共和国 | Tanzania, United Republic of | 
| 230 | UA | 乌克兰 | Ukraine | 
| 231 | UG | 乌干达 | Uganda | 
| 232 | UM | 美国本土外小岛屿 | United States Minor Outlying Islands | 
| 233 | US | 美国 | United States of America | 
| 234 | UY | 乌拉圭 | Uruguay | 
| 235 | UZ | 乌兹别克斯坦 | Uzbekistan | 
| 236 | VA | 梵蒂冈城国 | Vatican City State | 
| 237 | VC | 圣文森特和格林纳丁斯 | Saint Vincent and the Grenadines | 
| 238 | VE | 委内瑞拉玻利瓦尔共和国 | Venezuela, Bolivarian Republic of | 
| 239 | VG | 英属维尔京群岛 | Virgin Islands, British | 
| 240 | VI | 美属维尔京群岛 | Virgin Islands, U.S. | 
| 241 | VN | 越南 | Viet Nam | 
| 242 | VU | 瓦努阿图 | Vanuatu | 
| 243 | WF | 瓦利斯和富图纳 | Wallis and Futuna | 
| 244 | WS | 萨摩亚 | Samoa | 
| 245 | XK | 科索沃 | Kosovo | 
| 246 | YE | 也门 | Yemen | 
| 247 | YT | 马约特 | Mayotte | 
| 248 | ZA | 南非 | South Africa | 
| 249 | ZM | 赞比亚 | Zambia | 
| 250 | ZW | 津巴布韦 | Zimbabwe | 
上面这个算是全网最全的国家码列表了,Settings也不会显示全部,应用多语言适配一般也不会全部适配;
有些语言并不是系统语言,Settings切换某些语言会提示非系统语言。
其他说明:
- 代码格式:所有国家 / 地区代码均为两位大写字母,符合 ISO 3166-1 标准。
- 特殊区域: - TW:台湾(中国省级行政区)
- HK/- MO:中国香港 / 澳门特别行政区
- XK:科索沃(部分国家承认的独立国家,联合国未承认)
 
- 使用场景:常用于国际域名、IP 地址归属地、国际支付系统等。
