[Sony Cross-Device General] munjeni:
This is how it working, [MENTION=3989065]serajr[/MENTION] will understand it better I am surre since he know java better than me

package com.sonyericsson.android.servicemenu.serviceinfo;

import android.util.Log;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ModemSwitcher {
private static String readCurrentModem() throws IOException {
Throwable th;
BufferedReader in = null;
try {
BufferedReader in2 = new BufferedReader(new FileReader("/cache/recovery/fota/modem_switcher_status"));
try {
String line = in2.readLine();
if (line == null) {
throw new IOException("Line is null");
}
String[] values = line.split(",");
Log.d("Servicemenu.FOTA MS", "Read line: " + line);
if (values.length != 2) {
throw new IOException("Format error status file, nbr of fields found:" + values.length);
}
int tmpStatus = Integer.parseInt(values[0]);
if (tmpStatus != 0) {
throw new IOException("Modem switcher status is error: " + tmpStatus);
}
String str = values[1];
if (in2 != null) {
try {
in2.close();
} catch (IOException e) {
}
}
return str;
} catch (Throwable th2) {
th = th2;
in = in2;
if (in != null) {
try {
in.close();
} catch (IOException e2) {
}
}
throw th;
}
} catch (Throwable th3) {
th = th3;
if (in != null) {
in.close();
}
throw th;
}
}

private static String lookupSymlinkTarget(String src) {
String targetFileName = src;
try {
targetFileName = new File("/system/etc/customization/modem/", src).getCanonicalFile().getName();
} catch (IOException e) {
Log.e("Servicemenu.FOTA MS", "Error when getting canonical File: " + e);
}
Log.d("Servicemenu.FOTA MS", "Target filename of: " + src + " is: " + targetFileName);
return targetFileName;
}

public static String getCurrentModemConfig() throws IOException {
String target = lookupSymlinkTarget(readCurrentModem());
if (new File("/system/etc/customization/modem/", target).exists()) {
if (!"default".equals(target)) {
return "/system/etc/customization/modem/" + target;
}
throw new IOException("default is a file node that does not point to valid modem fs");
} else if ("default".equals(target)) {
Log.d("Servicemenu.FOTA MS", "No modem filesystems exists, return SINGLE_MODEM_FS");
return "single_filesystem";
} else {
throw new IOException("Current modem configuration is set to an invalid value: " + target);
}
}
}

And from SoftwareInfo class it loads that modemswitcher class:

private void displayCurrentModemConfig() {
String currentModem = null;
if (this.mFlagUnitTestEnabled) {
currentModem = UTBuilderUtility.getCurrentModemConfig();
} else {
try {
currentModem = ModemSwitcher.getCurrentModemConfig();
} catch (IOException e) {
Log.m1e("SoftwareInfo", "getCurrentModemConfig() IOException " + e);
}
}
if (!isAvailableString(currentModem)) {
currentModem = getString(R.string.sm_unknown_txt);
}
((TextView) findViewById(R.id.CurrentModemConfigValue)).setText(currentModem);
}

And this is string which returned from <string name="sm_unknown_txt">Unknown</string>

I have no time for this but hope somebody experienced figure out problem which some of you have with modem, I have no that problem don't know how. On first look into decompiled part of apk if I am not wrong, string is picked up from /cache/recovery/fota/modem_switcher_status so after that thing search that file (from string) in /system/etc/customization/modem/ and if file exist it uses that file if not exist it returns unknown, right?

[MENTION=4660353]Dilesh Perera[/MENTION] seems you using non existing configuration (as per my understanding your trow that unknown from this !isAvailableString(currentModem))