You should be able to do it quite simply with my Reflection library. Something like this though I haven't actually tried it. CellId and Lac only exist for GSM networks.
B4X:
Dim Obj1 As Reflector
Dim cid, lac As Int
Obj1.Target = Obj1.GetContext
Obj1.Target = Obj1.RunMethod2("getSystemService", "phone", "java.lang.String")
Obj1.Target = Obj1.RunMethod("getCellLocation") ' get a GsmCellLocation
cid = Obj1.RunMethod("getCid") ' gsm cell id
lac = Obj1.RunMethod("getLac") ' gsm location area code
I have test your code and it work for 3G as well. However, the CID and LAC is something like this for my country (Cambodia) CID=207457, LAC=30001 (in decimal format).
But how to get the MCC and MNC from your library?