我编写了一个java代码来更新软件并查看更新状态。 我已经在eclipse中编写了代码,我想使用GUI更新软件。 在GUI中有一个链接点击,我们可以看到更新状态。 Internet Explorer 11是默认浏览器。但是,单击该链接时会出现名为
的错误消息"无法识别浏览器类型"显示消息。
这是我的java代码:
protected static void retrieveIAInfo() {
String appString = readDefaultBrowserCommand();
// XTSce63590: manage Mozilla and Firefox
// commandline in the registry
if (isIE(appString)) {
m_DefaultBrowserPath = extractIECmd(appString);
} else if (isMozilla(appString)) {
m_DefaultBrowserPath = extractMozillaCmd(appString);
} else if (isFireFox(appString)) {
m_DefaultBrowserPath = extractMozillaCmd(appString);
} else {
throw new RegistryUtilitiesException("Unable to identify browser
type.",RegistryUtilitiesException.NO_BROWSER);
}
if (m_DefaultBrowserPath== null) {
throw new RegistryUtilitiesException("Unable to identify brwoser
type.",RegistryUtilitiesException.NO_BROWSER);
}
System.out.println("IABrowserPath: " + m_DefaultBrowserPath);
}
protected static String extractIECmd(String cmd) {
String browser_cmd = null;
//int index = cmd.toLowerCase().lastIndexOf ("-nohome");
int index = cmd.toLowerCase().lastIndexOf ("-url");
if (index != -1) {
cmd = cmd.substring(0, index);
// if (cmd.charAt(0) == '"') {
// index = cmd.toLowerCase().lastIndexOf ("\"");
if (cmd.charAt(0) == '"') {
index = cmd.toLowerCase().lastIndexOf ("%1");
if (index != -1) {
browser_cmd = cmd.substring(1, index);
}
}
}
return browser_cmd;
}
在函数retrieveIAInfo中,当调用extractIECmd(appString)时,函数总是返回false。因此throw命令 "无法识别浏览器类型" 在retrieveIAInfo中正在执行。 对于像Mozilla这样的其他浏览器,没有任何问题。仅在Iinternet Explorer 11浏览器的情况下,抛出异常。
cmd从以下寄存器值中提取索引:
" C:\ Program Files \ Internet Explorer \ iexplore.exe"%1
有人可以帮我把%1的值作为函数extractIECmd中的lastIndexOf变量
答案 0 :(得分:0)
我已经提到除了Internet Explorer 11之外的浏览器都运行良好。 要解决此问题,我们必须提取Internet Explorer 11的寄存器值 " C:\ Program Files \ Internet Explorer \ iexplore.exe \"%1"
消除%1并获取C:\ Program Files \ Internet Explorer \ iexplore.exe
这可以通过更改" extractIECmd()'来完成。作为
protected static String extractIECmd(String qq){
String browser_cmd = "";
*int index = qq.toString().lastIndexOf ("");*
if (index != -1) {
qq = qq.substring(0, index);
if (qq.charAt(0) == '"') {
index = qq.toLowerCase().lastIndexOf ("\"");
if (index != -1) {
browser_cmd = qq.substring(1, index);
}
}
}
return browser_cmd;
}
现在Internet Explorer也正常运行 问题解决了