Sense 7.0 强制打开H+和4GLTE联网图标显示

用联通的用户应该知道,联通3G主要有3种模式,UMTS、HSPA、HSPAP(HSPA+),显示在顶栏图标上分别是3G、H、H+。

而国行手机联通4G则显示的一般不是4G,也不是LTE,而是4GLTE(LTE逆时针旋转90度)。

而在M8、M9上,我们经常刷xda-developers上的ROM,这些都是针对欧美地区优化的,所以显示HSPAP时,一般都只显示H而不是H+,4G也只是显示4G或LTE。

但有些人偏偏就是喜欢H+和4GLTE标志怎么办?今天讲两个方法,一个很简单,但有副作用;一个稍显复杂,但没有副作用。

方法一:直接修改region和sku_id

打开system\customize\ACC\default.xml

搜索regionsku_id

找到

1
<item type="integer" name="region">6</item>

1
<item type="integer" name="sku_id">42</item>

(默认数值不一定相同)

region是HTC用于判断国家、地区的数值,sku_id是HTC用于判断运营商的数值,这里有个regionsku_id列表,感兴趣的可以下了研究下:http://pan.baidu.com/s/1sj2mazN

一般xda-developers上针对国际版的ROM默认都是region=6sku_id=42,因为欧洲的region为6,欧洲通用sku_id为42(HTC_EUROPE)。而中国的region为3,国行联通的sku_id为29(HTCCN_CHS_CU)。

因此,我们只要把这里的值改成3和29即可,即:

1
<item type="integer" name="region">3</item>

1
<item type="integer" name="sku_id">29</item>

然后保存,替换相应文件并重启即可。

这个方法修改很简单,甚至在手机上就可以完成(用R.E.管理器编辑)。但这样会出现一个问题,就是国行特性被打开了,比如不联网时,联网图标并不消失,而且底部变成勾;天气源也变成国内源(国内源经常出问题)。因此这个方法是有副作用的。

方法二:修改SystemUI.apk文件

此方法的前提是,

反编译SystemUI.apk

定位到smali\com\android\systemui\statusbar\policy\HtcGenericNetworkController.smali

编辑此文件,搜索isChina,一般在第四处,找到这样一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
:cond_41
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is46sku()Z

move-result v9

if-nez v9, :cond_43

invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->isChina()Z

move-result v9

if-eqz v9, :cond_42

invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is26sku()Z

move-result v9

if-eqz v9, :cond_43

:cond_42
const/16 v9, 0x27

sget v10, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->SKU_ID:I

if-eq v9, v10, :cond_43

invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is40sku()Z

move-result v9

if-eqz v9, :cond_44

.line 1262
:cond_43
sget-object v8, Lcom/android/systemui/statusbar/policy/HtcIcons;->HTC_DATA_HPLUS:[I

1
2
3
4
5
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->isChina()Z

move-result v9

if-eqz v9, :cond_42

中的if-eqz改为if-nez,即

1
2
3
4
5
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->isChina()Z

move-result v9

if-nez v9, :cond_42

这样,H+就可以正常显示了。

再搜索is29sku,一般在第五处,找到这样一段代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
:cond_5a
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is29sku()Z

move-result v8

if-nez v8, :cond_5b

invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->isLATAM()Z

move-result v8

if-eqz v8, :cond_5c

.line 1343
:cond_5b
sget-object v8, Lcom/android/systemui/statusbar/policy/HtcIcons;->HTC_DATA_4GLTE:[I

1
2
3
4
5
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is29sku()Z

move-result v8

if-nez v8, :cond_5b

中的if-nez改为if-eqz,即

1
2
3
4
5
invoke-static {}, Lcom/android/systemui/statusbar/policy/HtcGenericNetworkController;->is29sku()Z

move-result v8

if-eqz v8, :cond_5b

这样,4GLTE就可以正常显示了。

但这个方法也有个限制,就是regionsku_id分别不能是3和29。原因是,这两处其实是修改HTC_DATA_HPLUS和HTC_DATA_4GLTE的触发条件,本来识别到region==3时显示H+,现在改成region!=3时显示H+。同理,本来识别到sku_id==29时显示4GLTE,现在改成sku_id!=29时显示4GLTE。

总之,前一种适合喜欢国行特性的人使用,后一种方法适合不喜欢国行特性且会反编译的人使用。

如果你喜欢我的文章,欢迎打赏。