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 地址归属地、国际支付系统等。
