Android13 wifi设置国家码详解

发布于:2025-05-27 ⋅ 阅读:(46) ⋅ 点赞:(0)

Android13 wifi设置国家码详解

一、前言

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 string
  force-country-code enabled <two-letter code> | disabled //设置国家码
    Sets country code to <two-letter code> or left for normal value
    or '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 地址归属地、国际支付系统等。

PS: 把每一天的烟火气,都酿成热爱的诗 .


网站公告

今日签到

点亮在社区的每一天
去签到