Steam允许用户启动游戏并执行许多其他操作的一种方法是使用URI协议,例如(来自Valve developer community):
steam://run/<id>
将启动与指定ID对应的游戏。
steam://validate/<id>
将验证指定ID的游戏文件。
如何让Java“运行”这些?我甚至不知道你叫什么,即你'运行'URI,或'执行'它们,或者什么?因为可能这些URI没有任何东西可以返回,并且Java中的URI
类没有任何与“执行”它们相关的内容,但URL
会这样做,但它不起作用!< / p>
我试过这个:
...
try
{
URI testURI = URI.create("steam://run/240");
URL testURL = joinURI.toURL();
// URL testURL = new URL("steam://run/240") doesn't work either
joinURL.openConnection(); // Doesn't work
// joinURL.openStream() doesn't work either
}
catch (MalformedURLException e)
{
System.err.println(e.getMessage());
}
...
每个组合都会出错:unknown protocol: steam
。
Steam用来处理URI的系统肯定有用,因为例如,我可以在Firefox中输入上面的URI,它可以工作。
我永远感谢提供答案的人!
由于
答案 0 :(得分:7)
尝试Desktop.browse(URI)
,这应该启动“默认操作”,即steam://
URI的Steam客户端,例如
URI uri = new URI("steam://store/240");
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().browse(uri);
}
答案 1 :(得分:0)
Steam用来处理URI的系统肯定有用,因为例如,我可以在Firefox中输入上面的URI,它可以工作。
它正在运行,因为Firefox(或其他浏览器)可以将未知协议与应用程序相关联。当您第一次加载steam://xxx
时,Firefox会询问您要打开哪个应用程序。如果它没有问你,steam可能会安装一个浏览器插件。
答案 2 :(得分:0)
A Uniform Resource Identifier (URI)只标识资源,但不一定描述如何访问它。此外,对于自定义协议,例如“steam”,供应商可以定义兼容的客户端程序必须知道的任何底层访问约定。
为了“执行”这样的URI,您需要确切地知道协议是如何实现的(是通过HTTP?TCP?UDP?)以及如何与另一端的服务器通话。
Valve Developer Community wiki page可能包含一些有用的信息。