世界杯预选赛中国队赛程_世界杯多少年一次 - fybstd.com


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 string

force-country-code enabled | disabled //设置国家码

Sets country code to 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 个条目:

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

序号代码国家 / 地区名称(中文)国家 / 地区名称(英文)1AD安道尔Andorra2AE阿拉伯联合酋长国United Arab Emirates3AF阿富汗Afghanistan4AG安提瓜和巴布达Antigua and Barbuda5AI安圭拉Anguilla6AL阿尔巴尼亚Albania7AM亚美尼亚Armenia8AO安哥拉Angola9AQ南极洲Antarctica10AR阿根廷Argentina11AS美属萨摩亚American Samoa12AT奥地利Austria13AU澳大利亚Australia14AW阿鲁巴Aruba15AX奥兰群岛Åland Islands16AZ阿塞拜疆Azerbaijan17BA波斯尼亚和黑塞哥维那Bosnia and Herzegovina18BB巴巴多斯Barbados19BD孟加拉国Bangladesh20BE比利时Belgium21BF布基纳法索Burkina Faso22BG保加利亚Bulgaria23BH巴林Bahrain24BI布隆迪Burundi25BJ贝宁Benin26BL圣巴泰勒米Saint Barthélemy27BM百慕大Bermuda28BN文莱达鲁萨兰国Brunei Darussalam29BO玻利维亚(多民族国)Bolivia, Plurinational State of30BQ博内尔、圣尤斯特歇斯和萨巴Bonaire, Sint Eustatius and Saba31BR巴西Brazil32BS巴哈马Bahamas33BT不丹Bhutan34BV布维岛Bouvet Island35BW博茨瓦纳Botswana36BY白俄罗斯Belarus37BZ伯利兹Belize38CA加拿大Canada39CC科科斯(基林)群岛Cocos (Keeling) Islands40CD刚果民主共和国Congo, the Democratic Republic of the41CF中非共和国Central African Republic42CG刚果共和国Congo43CH瑞士Switzerland44CI科特迪瓦Côte d’Ivoire45CK库克群岛Cook Islands46CL智利Chile47CM喀麦隆Cameroon48CN中国China49CO哥伦比亚Colombia50CR哥斯达黎加Costa Rica51CU古巴Cuba52CV佛得角Cabo Verde53CW库拉索Curaçao54CX圣诞岛Christmas Island55CY塞浦路斯Cyprus56CZ捷克共和国Czech Republic57DE德国Germany58DJ吉布提Djibouti59DK丹麦Denmark60DM多米尼克Dominica61DO多米尼加共和国Dominican Republic62DZ阿尔及利亚Algeria63EC厄瓜多尔Ecuador64EE爱沙尼亚Estonia65EG埃及Egypt66EH西撒哈拉Western Sahara67ER厄立特里亚Eritrea68ES西班牙Spain69ET埃塞俄比亚Ethiopia70FI芬兰Finland71FJ斐济Fiji72FK福克兰群岛(马尔维纳斯)Falkland Islands (Malvinas)73FM密克罗尼西亚联邦Federated States of Micronesia74FO法罗群岛Faroe Islands75FR法国France76GA加蓬Gabon77GB英国United Kingdom78GD格林纳达Grenada79GE格鲁吉亚Georgia80GF法属圭亚那French Guiana81GG根西岛Guernsey82GH加纳Ghana83GI直布罗陀Gibraltar84GL格陵兰Greenland85GM冈比亚Gambia86GN几内亚Guinea87GP瓜德罗普Guadeloupe88GQ赤道几内亚Equatorial Guinea89GR希腊Greece90GS南乔治亚岛和南桑威奇群岛South Georgia and the South Sandwich Islands91GT危地马拉Guatemala92GU关岛Guam93GW几内亚比绍Guinea-Bissau94GY圭亚那Guyana95HK中国香港特别行政区Hong Kong Special Administrative Region of China96HM赫德岛和麦克唐纳群岛Heard Island and McDonald Islands97HN洪都拉斯Honduras98HR克罗地亚Croatia99HT海地Haiti100HU匈牙利Hungary101ID印度尼西亚Indonesia102IE爱尔兰Ireland103IL以色列Israel104IM马恩岛Isle of Man105IN印度India106IO英属印度洋领地British Indian Ocean Territory107IQ伊拉克Iraq108IR伊朗伊斯兰共和国Iran, Islamic Republic of109IS冰岛Iceland110IT意大利Italy111JE泽西岛Jersey112JM牙买加Jamaica113JO约旦Jordan114JP日本Japan115KE肯尼亚Kenya116KG吉尔吉斯斯坦Kyrgyzstan117KH柬埔寨Cambodia118KI基里巴斯Kiribati119KM科摩罗Comoros120KN圣基茨和尼维斯Saint Kitts and Nevis121KP朝鲜民主主义人民共和国Korea, Democratic People’s Republic of122KR大韩民国Korea, Republic of123KW科威特Kuwait124KY开曼群岛Cayman Islands125KZ哈萨克斯坦Kazakhstan126LA老挝人民民主共和国Lao People’s Democratic Republic127LB黎巴嫩Lebanon128LC圣卢西亚Saint Lucia129LI列支敦士登Liechtenstein130LK斯里兰卡Sri Lanka131LR利比里亚Liberia132LS莱索托Lesotho133LT立陶宛Lithuania134LU卢森堡Luxembourg135LV拉脱维亚Latvia136LY利比亚Libya137MA摩洛哥Morocco138MC摩纳哥Monaco139MD摩尔多瓦共和国Moldova, Republic of140ME黑山Montenegro141MF圣马丁(法属部分)Saint Martin (French part)142MG马达加斯加Madagascar143MH马绍尔群岛Marshall Islands144MK北马其顿North Macedonia145ML马里Mali146MM缅甸Myanmar147MN蒙古Mongolia148MO中国澳门特别行政区Macao Special Administrative Region of China149MP北马里亚纳群岛Northern Mariana Islands150MQ马提尼克Martinique151MR毛里塔尼亚Mauritania152MS蒙特塞拉特Montserrat153MT马耳他Malta154MU毛里求斯Mauritius155MV马尔代夫Maldives156MW马拉维Malawi157MX墨西哥Mexico158MY马来西亚Malaysia159MZ莫桑比克Mozambique160NA纳米比亚Namibia161NC新喀里多尼亚New Caledonia162NE尼日尔Niger163NF诺福克岛Norfolk Island164NG尼日利亚Nigeria165NI尼加拉瓜Nicaragua166NL荷兰Netherlands167NO挪威Norway168NP尼泊尔Nepal169NR瑙鲁Nauru170NU纽埃Niue171NZ新西兰New Zealand172OM阿曼Oman173PA巴拿马Panama174PE秘鲁Peru175PF法属波利尼西亚French Polynesia176PG巴布亚新几内亚Papua New Guinea177PH菲律宾Philippines178PK巴基斯坦Pakistan179PL波兰Poland180PM圣皮埃尔和密克隆Saint Pierre and Miquelon181PN皮特凯恩Pitcairn182PR波多黎各Puerto Rico183PS巴勒斯坦国Palestine, State of184PT葡萄牙Portugal185PW帕劳Palau186PY巴拉圭Paraguay187QA卡塔尔Qatar188RE留尼汪Réunion189RO罗马尼亚Romania190RS塞尔维亚Serbia191RU俄罗斯联邦Russian Federation192RW卢旺达Rwanda193SA沙特阿拉伯Saudi Arabia194SB所罗门群岛Solomon Islands195SC塞舌尔Seychelles196SD苏丹Sudan197SE瑞典Sweden198SG新加坡Singapore199SH圣赫勒拿、阿森松和特里斯坦 - 达库尼亚Saint Helena, Ascension and Tristan da Cunha200SI斯洛文尼亚Slovenia201SJ斯瓦尔巴和扬马延Svalbard and Jan Mayen202SK斯洛伐克Slovakia203SL塞拉利昂Sierra Leone204SM圣马力诺San Marino205SN塞内加尔Senegal206SO索马里Somalia207SR苏里南Suriname208SS南苏丹South Sudan209ST圣多美和普林西比São Tomé and Príncipe210SV萨尔瓦多El Salvador211SX圣马丁(荷属部分)Sint Maarten (Dutch part)212SY阿拉伯叙利亚共和国Syrian Arab Republic213SZ斯威士兰Eswatini214TC特克斯和凯科斯群岛Turks and Caicos Islands215TD乍得Chad216TF法属南部领地French Southern Territories217TG多哥Togo218TH泰国Thailand219TJ塔吉克斯坦Tajikistan220TK托克劳Tokelau221TL东帝汶Timor-Leste222TM土库曼斯坦Turkmenistan223TN突尼斯Tunisia224TO汤加Tonga225TR土耳其Turkey226TT特立尼达和多巴哥Trinidad and Tobago227TV图瓦卢Tuvalu228TW中国台湾Taiwan, Province of China229TZ坦桑尼亚联合共和国Tanzania, United Republic of230UA乌克兰Ukraine231UG乌干达Uganda232UM美国本土外小岛屿United States Minor Outlying Islands233US美国United States of America234UY乌拉圭Uruguay235UZ乌兹别克斯坦Uzbekistan236VA梵蒂冈城国Vatican City State237VC圣文森特和格林纳丁斯Saint Vincent and the Grenadines238VE委内瑞拉玻利瓦尔共和国Venezuela, Bolivarian Republic of239VG英属维尔京群岛Virgin Islands, British240VI美属维尔京群岛Virgin Islands, U.S.241VN越南Viet Nam242VU瓦努阿图Vanuatu243WF瓦利斯和富图纳Wallis and Futuna244WS萨摩亚Samoa245XK科索沃Kosovo246YE也门Yemen247YT马约特Mayotte248ZA南非South Africa249ZM赞比亚Zambia250ZW津巴布韦Zimbabwe

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

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

其他说明:

代码格式:所有国家 / 地区代码均为两位大写字母,符合 ISO 3166-1 标准。特殊区域:

TW:台湾(中国省级行政区)HK/MO:中国香港 / 澳门特别行政区XK:科索沃(部分国家承认的独立国家,联合国未承认) 使用场景:常用于国际域名、IP 地址归属地、国际支付系统等。

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