![](/img/trans.png)
[英]Java native messaging with chrome extension - cannot correctly write length
[英]Chrome Native Messaging Chrome Extension
我正在尝试将本机消息传递与chrome扩展程序和java应用程序合并。
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
在注册表中导入以下内容
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格式的。
另一个答案有问题。 因此,我花了几个小时。
在com.app.native.messaging.json
文件中,最后一行必须是这样的:
"chrome-extension://<YOUR EXTENSION HASH>/"
我没加斜杠,所以扩展名没有给出任何错误,但是应用程序没有启动。 希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.