我正在尝试将本地消息传递与我的chrome扩展和我的java应用程序结合起来。
在我的chrome扩展的javascript中,我有以下代码。(我的manifest.json中有nativeMessaging权限)
function connectToNativeApp()
{
console.log('connecting to native app...');
port = chrome.runtime.connectNative('com.app.native');
port.onMessage.addListener(onNativeMessage);
port.onDisconnect.addListener(onDisconnected);
console.log('connected to native app...');
}当我向本机应用程序发送消息时,我的java应用程序应该向扩展发送回一条消息,但它没有。为了测试它是否真的连接到了扩展,我在connectNative方法中输入了错误的主机名,但没有错误!?
我听说需要添加注册表项,因为我在windows上,但我不知道如何添加,并且在regedit的chrome文件夹下没有NativeMessagingHosts文件夹。
我的本地应用程序文件夹也与chrome扩展位于同一文件夹中。我试着寻找了许多教程,但发现没有一个对我的问题有用。为什么Windows让一切变得复杂?:)
请帮帮忙。感谢您的时间和帮助。Subby
发布于 2014-10-03 19:13:41
在注册表中导入以下内容
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts]
[HKEY_CURRENT_USER\Software\Google\Chrome\NativeMessagingHosts\com.app.native]
@="<YOURPATHHERE>\\com.app.native.messaging.json"一个示例路径可以是"C:\MyExtensions\com.app.native.messaging.json“,确保文件夹中有一个名为com.app.native.messaging.json (或您喜欢的任何其他名称)的json文件。在JSON文件中,添加以下内容
{
"name": "com.app.native.messaging",
"description": "Your desctiption",
"path": "<YOUR NATIVE APP NAME>.exe",
"type": "stdio",
"allowed_origins": [
"chrome-extension: <YOUR EXTENSION HASH>"
]
}只要确保本机应用程序与JSON位于同一文件夹中,就不会有问题。在我的例子中,我使用的是C++原生应用程序,因此扩展名为exe。如果你看一下chrome示例,你会发现他们在原生应用中使用了python脚本。
请记住,您将在STDIN上侦听传入的消息,并使用STDOUT将消息发送回chrome。在这两种情况下,消息都是JSON格式的。
发布于 2015-07-09 02:48:53
另一个答案是有问题的。因为这个我花了好几个小时。
在com.app.native.messaging.json文件中,最后一行必须如下所示:
"chrome-extension://<YOUR EXTENSION HASH>/"我没有放置斜杠,所以扩展没有给出任何错误,但应用程序没有启动。希望能有所帮助。
https://stackoverflow.com/questions/24144021
复制相似问题