[Samsung Galaxy Nexus] BraydenJames:
So I don't know if this is an obvious question or not. There's something I want to change in the NetworkController.java class in the SystemUI.apk. I found what I need to do by looking at the Android source code. So after much research I downloaded APK manager and decompiled the apk. But now I have these smali files which I've read are the assembler for the dex format produced by the dalvik vm. So I don't know what to do now? Is this what I have to try to edit? Because I have no idea what's going on in NetworkController.smali. I know what I need to change in the java code... But I'm clueless with the smali? Is there another step here I missing that turns the smali into java code I can edit? Or is this really how people edit this stuff?!

Thanks!

Edit: So from more research it looks like the only way to edit the actual java code of the SystemUI.apk is to do it in the source and then compile my own rom. That's a lot of work for about 5 lines of a code I need to change. Is this really the case?

Edit 2: I've been doing a lot of research into this and I now know the exact lines that need to be changed to make this possible. Within com.android.systemui.statusbar.policy.NetworkController (In SystemUI.apk) there is a switch statement that decides the icon to be displayed based on the network. Part of this switch is as follows:

521 case TelephonyManager.NETWORK_TYPE_HSDPA:
522 case TelephonyManager.NETWORK_TYPE_HSUPA:
523 case TelephonyManager.NETWORK_TYPE_HSPA:
524 case TelephonyManager.NETWORK_TYPE_HSPAP:
525 if (mHspaDataDistinguishable) {
526 mDataIconList = TelephonyIcons.DATA_H[mInetCondition];
527 mDataTypeIconId = R.drawable.stat_sys_data_connected_h;
528 mContentDescriptionDataType = mContext.getString(
529 R.string.accessibility_data_connection_3_5g);
530 } else {
531 mDataIconList = TelephonyIcons.DATA_3G[mInetCondition];
532 mDataTypeIconId = R.drawable.stat_sys_data_connected_3g;
533 mContentDescriptionDataType = mContext.getString(
534 R.string.accessibility_data_connection_3g);
535 }
536 break;

So as you can see, the switch statement puts all the types of HSPA together into one case (by not breaking it falls through all of them to the last one), which is why it shows H no matter what. All that needs to be done here is to change it so HSPAP has its own case in which it uses the 4G icon (or an added H+ icon if so desired). I've actually been doing a lot of research today to see if I could just pull the SystemUI.apk from my rom, decompile it, make this modification, recompile, and push it back to do this myself... But I've now learned lots about how android (or the dalvik vm) compiles the java into smali assembly code and that's what I get from decompiling the apk. Not the java code. So this is not just a simple edit :(.

So is there any chance this could be added? Or could someone point me in a better direction as to how to make this modification myself? The smali code is extremely confusing. I'm not sure if it's even possible to edit the smali to do this, not that I would know where to start. It seems this has to be done before the ROM is compiled?

Thanks for the consideration! And I welcome any help!