diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 9040edb7a58c2..6fd7657979023 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -158,4 +158,6 @@
false
+
+ false
diff --git a/services/java/com/android/server/status/StatusBarPolicy.java b/services/java/com/android/server/status/StatusBarPolicy.java
index 3d1fb83ee1327..d590c40286122 100644
--- a/services/java/com/android/server/status/StatusBarPolicy.java
+++ b/services/java/com/android/server/status/StatusBarPolicy.java
@@ -272,6 +272,7 @@ public class StatusBarPolicy {
private IBinder mDataIcon;
private IconData mDataData;
private boolean mDataIconVisible;
+ private boolean mHspaDataDistinguishable;
// ringer volume
private IBinder mVolumeIcon;
@@ -517,6 +518,14 @@ public class StatusBarPolicy {
filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
filter.addAction(TtyIntent.TTY_ENABLED_CHANGE_ACTION);
mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
+
+ // load config to determine if to distinguish Hspa data icon
+ try {
+ mHspaDataDistinguishable = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_hspa_data_distinguishable);
+ } catch (Exception e) {
+ mHspaDataDistinguishable = false;
+ }
}
public static void installIcons(Context context, StatusBarService service) {
@@ -960,7 +969,11 @@ public class StatusBarPolicy {
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
- mDataIconList = sDataNetType_h;
+ if (mHspaDataDistinguishable) {
+ mDataIconList = sDataNetType_h;
+ } else {
+ mDataIconList = sDataNetType_3g;
+ }
break;
case TelephonyManager.NETWORK_TYPE_CDMA:
// display 1xRTT for IS95A/B