当前位置: 首页 > news >正文

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 个条目:

国家 / 地区代码表(带序号):

序号代码国家 / 地区名称(中文)国家 / 地区名称(英文)
1AD安道尔Andorra
2AE阿拉伯联合酋长国United Arab Emirates
3AF阿富汗Afghanistan
4AG安提瓜和巴布达Antigua and Barbuda
5AI安圭拉Anguilla
6AL阿尔巴尼亚Albania
7AM亚美尼亚Armenia
8AO安哥拉Angola
9AQ南极洲Antarctica
10AR阿根廷Argentina
11AS美属萨摩亚American Samoa
12AT奥地利Austria
13AU澳大利亚Australia
14AW阿鲁巴Aruba
15AX奥兰群岛Åland Islands
16AZ阿塞拜疆Azerbaijan
17BA波斯尼亚和黑塞哥维那Bosnia and Herzegovina
18BB巴巴多斯Barbados
19BD孟加拉国Bangladesh
20BE比利时Belgium
21BF布基纳法索Burkina Faso
22BG保加利亚Bulgaria
23BH巴林Bahrain
24BI布隆迪Burundi
25BJ贝宁Benin
26BL圣巴泰勒米Saint Barthélemy
27BM百慕大Bermuda
28BN文莱达鲁萨兰国Brunei Darussalam
29BO玻利维亚(多民族国)Bolivia, Plurinational State of
30BQ博内尔、圣尤斯特歇斯和萨巴Bonaire, Sint Eustatius and Saba
31BR巴西Brazil
32BS巴哈马Bahamas
33BT不丹Bhutan
34BV布维岛Bouvet Island
35BW博茨瓦纳Botswana
36BY白俄罗斯Belarus
37BZ伯利兹Belize
38CA加拿大Canada
39CC科科斯(基林)群岛Cocos (Keeling) Islands
40CD刚果民主共和国Congo, the Democratic Republic of the
41CF中非共和国Central African Republic
42CG刚果共和国Congo
43CH瑞士Switzerland
44CI科特迪瓦Côte d’Ivoire
45CK库克群岛Cook Islands
46CL智利Chile
47CM喀麦隆Cameroon
48CN中国China
49CO哥伦比亚Colombia
50CR哥斯达黎加Costa Rica
51CU古巴Cuba
52CV佛得角Cabo Verde
53CW库拉索Curaçao
54CX圣诞岛Christmas Island
55CY塞浦路斯Cyprus
56CZ捷克共和国Czech Republic
57DE德国Germany
58DJ吉布提Djibouti
59DK丹麦Denmark
60DM多米尼克Dominica
61DO多米尼加共和国Dominican Republic
62DZ阿尔及利亚Algeria
63EC厄瓜多尔Ecuador
64EE爱沙尼亚Estonia
65EG埃及Egypt
66EH西撒哈拉Western Sahara
67ER厄立特里亚Eritrea
68ES西班牙Spain
69ET埃塞俄比亚Ethiopia
70FI芬兰Finland
71FJ斐济Fiji
72FK福克兰群岛(马尔维纳斯)Falkland Islands (Malvinas)
73FM密克罗尼西亚联邦Federated States of Micronesia
74FO法罗群岛Faroe Islands
75FR法国France
76GA加蓬Gabon
77GB英国United Kingdom
78GD格林纳达Grenada
79GE格鲁吉亚Georgia
80GF法属圭亚那French Guiana
81GG根西岛Guernsey
82GH加纳Ghana
83GI直布罗陀Gibraltar
84GL格陵兰Greenland
85GM冈比亚Gambia
86GN几内亚Guinea
87GP瓜德罗普Guadeloupe
88GQ赤道几内亚Equatorial Guinea
89GR希腊Greece
90GS南乔治亚岛和南桑威奇群岛South Georgia and the South Sandwich Islands
91GT危地马拉Guatemala
92GU关岛Guam
93GW几内亚比绍Guinea-Bissau
94GY圭亚那Guyana
95HK中国香港特别行政区Hong Kong Special Administrative Region of China
96HM赫德岛和麦克唐纳群岛Heard Island and McDonald Islands
97HN洪都拉斯Honduras
98HR克罗地亚Croatia
99HT海地Haiti
100HU匈牙利Hungary
101ID印度尼西亚Indonesia
102IE爱尔兰Ireland
103IL以色列Israel
104IM马恩岛Isle of Man
105IN印度India
106IO英属印度洋领地British Indian Ocean Territory
107IQ伊拉克Iraq
108IR伊朗伊斯兰共和国Iran, Islamic Republic of
109IS冰岛Iceland
110IT意大利Italy
111JE泽西岛Jersey
112JM牙买加Jamaica
113JO约旦Jordan
114JP日本Japan
115KE肯尼亚Kenya
116KG吉尔吉斯斯坦Kyrgyzstan
117KH柬埔寨Cambodia
118KI基里巴斯Kiribati
119KM科摩罗Comoros
120KN圣基茨和尼维斯Saint Kitts and Nevis
121KP朝鲜民主主义人民共和国Korea, Democratic People’s Republic of
122KR大韩民国Korea, Republic of
123KW科威特Kuwait
124KY开曼群岛Cayman Islands
125KZ哈萨克斯坦Kazakhstan
126LA老挝人民民主共和国Lao People’s Democratic Republic
127LB黎巴嫩Lebanon
128LC圣卢西亚Saint Lucia
129LI列支敦士登Liechtenstein
130LK斯里兰卡Sri Lanka
131LR利比里亚Liberia
132LS莱索托Lesotho
133LT立陶宛Lithuania
134LU卢森堡Luxembourg
135LV拉脱维亚Latvia
136LY利比亚Libya
137MA摩洛哥Morocco
138MC摩纳哥Monaco
139MD摩尔多瓦共和国Moldova, Republic of
140ME黑山Montenegro
141MF圣马丁(法属部分)Saint Martin (French part)
142MG马达加斯加Madagascar
143MH马绍尔群岛Marshall Islands
144MK北马其顿North Macedonia
145ML马里Mali
146MM缅甸Myanmar
147MN蒙古Mongolia
148MO中国澳门特别行政区Macao Special Administrative Region of China
149MP北马里亚纳群岛Northern Mariana Islands
150MQ马提尼克Martinique
151MR毛里塔尼亚Mauritania
152MS蒙特塞拉特Montserrat
153MT马耳他Malta
154MU毛里求斯Mauritius
155MV马尔代夫Maldives
156MW马拉维Malawi
157MX墨西哥Mexico
158MY马来西亚Malaysia
159MZ莫桑比克Mozambique
160NA纳米比亚Namibia
161NC新喀里多尼亚New Caledonia
162NE尼日尔Niger
163NF诺福克岛Norfolk Island
164NG尼日利亚Nigeria
165NI尼加拉瓜Nicaragua
166NL荷兰Netherlands
167NO挪威Norway
168NP尼泊尔Nepal
169NR瑙鲁Nauru
170NU纽埃Niue
171NZ新西兰New Zealand
172OM阿曼Oman
173PA巴拿马Panama
174PE秘鲁Peru
175PF法属波利尼西亚French Polynesia
176PG巴布亚新几内亚Papua New Guinea
177PH菲律宾Philippines
178PK巴基斯坦Pakistan
179PL波兰Poland
180PM圣皮埃尔和密克隆Saint Pierre and Miquelon
181PN皮特凯恩Pitcairn
182PR波多黎各Puerto Rico
183PS巴勒斯坦国Palestine, State of
184PT葡萄牙Portugal
185PW帕劳Palau
186PY巴拉圭Paraguay
187QA卡塔尔Qatar
188RE留尼汪Réunion
189RO罗马尼亚Romania
190RS塞尔维亚Serbia
191RU俄罗斯联邦Russian Federation
192RW卢旺达Rwanda
193SA沙特阿拉伯Saudi Arabia
194SB所罗门群岛Solomon Islands
195SC塞舌尔Seychelles
196SD苏丹Sudan
197SE瑞典Sweden
198SG新加坡Singapore
199SH圣赫勒拿、阿森松和特里斯坦 - 达库尼亚Saint Helena, Ascension and Tristan da Cunha
200SI斯洛文尼亚Slovenia
201SJ斯瓦尔巴和扬马延Svalbard and Jan Mayen
202SK斯洛伐克Slovakia
203SL塞拉利昂Sierra Leone
204SM圣马力诺San Marino
205SN塞内加尔Senegal
206SO索马里Somalia
207SR苏里南Suriname
208SS南苏丹South Sudan
209ST圣多美和普林西比São Tomé and Príncipe
210SV萨尔瓦多El Salvador
211SX圣马丁(荷属部分)Sint Maarten (Dutch part)
212SY阿拉伯叙利亚共和国Syrian Arab Republic
213SZ斯威士兰Eswatini
214TC特克斯和凯科斯群岛Turks and Caicos Islands
215TD乍得Chad
216TF法属南部领地French Southern Territories
217TG多哥Togo
218TH泰国Thailand
219TJ塔吉克斯坦Tajikistan
220TK托克劳Tokelau
221TL东帝汶Timor-Leste
222TM土库曼斯坦Turkmenistan
223TN突尼斯Tunisia
224TO汤加Tonga
225TR土耳其Turkey
226TT特立尼达和多巴哥Trinidad and Tobago
227TV图瓦卢Tuvalu
228TW中国台湾Taiwan, Province of China
229TZ坦桑尼亚联合共和国Tanzania, United Republic of
230UA乌克兰Ukraine
231UG乌干达Uganda
232UM美国本土外小岛屿United States Minor Outlying Islands
233US美国United States of America
234UY乌拉圭Uruguay
235UZ乌兹别克斯坦Uzbekistan
236VA梵蒂冈城国Vatican City State
237VC圣文森特和格林纳丁斯Saint Vincent and the Grenadines
238VE委内瑞拉玻利瓦尔共和国Venezuela, Bolivarian Republic of
239VG英属维尔京群岛Virgin Islands, British
240VI美属维尔京群岛Virgin Islands, U.S.
241VN越南Viet Nam
242VU瓦努阿图Vanuatu
243WF瓦利斯和富图纳Wallis and Futuna
244WS萨摩亚Samoa
245XK科索沃Kosovo
246YE也门Yemen
247YT马约特Mayotte
248ZA南非South Africa
249ZM赞比亚Zambia
250ZW津巴布韦Zimbabwe

上面这个算是全网最全的国家码列表了,Settings也不会显示全部,应用多语言适配一般也不会全部适配;

有些语言并不是系统语言,Settings切换某些语言会提示非系统语言。

其他说明:

  • 代码格式:所有国家 / 地区代码均为两位大写字母,符合 ISO 3166-1 标准。
  • 特殊区域:
    • TW:台湾(中国省级行政区)
    • HK/MO:中国香港 / 澳门特别行政区
    • XK:科索沃(部分国家承认的独立国家,联合国未承认)
  • 使用场景:常用于国际域名、IP 地址归属地、国际支付系统等。

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

相关文章:

  • 全球机电气缸市场深度洞察:技术驱动与产业升级下的增长机遇(2025-2031)
  • 面试相关的知识点
  • mmaction2——tools文件夹下
  • 从零基础到最佳实践:Vue.js 系列(4/10):《Vue Router 路由管理:深入探索与实战应用》
  • 深入浅出理解时间复杂度和空间复杂度
  • 学习黑客了解密码学
  • UML 活动图 (Activity Diagram) 使用案例
  • 【Java高阶面经:微服务篇】8.高可用全链路治理:第三方接口不稳定的全场景解决方案
  • 【C++】模板下(泛型编程)
  • java面试每日一背 day1
  • 深入解析应用程序分层及 BaseDao 的封装策略
  • 操作系统 第四章 -2
  • 2025上半年软考准考证打印入口已开放!
  • 黑色矩形大于6识别
  • 编程技能:字符串函数09,strncmp
  • Base64加密解密
  • C++:array容器
  • 十七、面向对象底层逻辑-MessageSource接口设计
  • 野火RK3588部署yolov8
  • html模板-源码免费下载-html通用模板-html建站模板
  • 做网站淮南/自建网站平台有哪些
  • html5标准网站建设/百度小说排行榜2020
  • 泰安公司网站开发/如何注册百度账号