Java Chrome应用程序:使用本机消息传递主机启动外部应用程序(shell脚本或jar)
我正在开发一个GoogleChrome应用程序,我需要启动一个Java应用程序。(实际上,我需要在没有choosefile弹出窗口的情况下读取和保存文件) 由于NPAPI库已被弃用,我已寻找替代方案,并决定使用“”启动外部应用程序 为了创建我的第一个示例,我尝试启动一个shell脚本,因为我认为这更容易。但是,我还没有成功地启动脚本。我在linux上开发 清单文件在此路径中 “/etc/opt/chrome/native messaing hosts/com.centeropenmiddleware.l3p1.xmleditor.json”: 其中包括:Java Chrome应用程序:使用本机消息传递主机启动外部应用程序(shell脚本或jar),java,linux,bash,google-chrome-app,chrome-native-messaging,Java,Linux,Bash,Google Chrome App,Chrome Native Messaging,我正在开发一个GoogleChrome应用程序,我需要启动一个Java应用程序。(实际上,我需要在没有choosefile弹出窗口的情况下读取和保存文件) 由于NPAPI库已被弃用,我已寻找替代方案,并决定使用“”启动外部应用程序 为了创建我的第一个示例,我尝试启动一个shell脚本,因为我认为这更容易。但是,我还没有成功地启动脚本。我在linux上开发 清单文件在此路径中 “/etc/opt/chrome/native messaing hosts/com.centeropenmiddlewa
{
"name": "com.centeropenmiddleware.l3p1.xmleditor",
"description": "Saving a file",
"path": "/home/paco2/pp.sh",
"type": "stdio",
"allowed_origins": [
"chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/"
]
}
应用程序id为plfnjepfbddljeogecampcceiofapnm
脚本将创建一个文件:
#!/bin/bash
echo hola mundo >> aaa
此行中的应用程序代码失败:
try {
var port = chrome.runtime.connectNative ('com.centeropenmiddleware.l3p1.xmleditor')
} catch (e) {
console.log(e);
return;
}
捕捉到的错误是
{
message : "Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor",
stack : "Error: Error connecting to native app: com.centeropenmiddleware.l3p1.xmleditor
at Object.<anonymous> (extensions::runtime:189:11)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Object.handleRequest (extensions::binding:55:27)
at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14)
at Object.<anonymous> (extensions::binding:318:32)
at saveas (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:104:35)
at HTMLButtonElement.sendFileContentFromEditor (chrome-extension://plfnjepfbddljeogeacemcpceiofapnm/js/editorRoutines.js:89:27)"
}
我使用稳定的谷歌浏览器版本(34.0.1847.132)
有什么不对吗 Bash是处理Chromiums本机消息传递API的错误选择 它无法以任何有效的方式处理二进制信息,请参阅 不过,我确实成功地启动了一个bash脚本。为此,我使用了sendNativeMessage。只发送一次
chrome.runtime.sendNativeMessage('com.centeropenmiddleware.l3p1.xmleditor',
{text: "send"},
function(response) {console.log("Received " +
chrome.runtime.lastError.message);
});
它将启动/home/paco2/pp.sh,但在bash中解析消息将很困难,即使它是一个简短的assend
简短的<强>不要使用BASH <强>,在这两个之间尝试C++或Python,使用<代码>子进程< /C> > /P>
chrome.runtime.sendNativeMessage('com.centeropenmiddleware.l3p1.xmleditor',
{text: "send"},
function(response) {console.log("Received " +
chrome.runtime.lastError.message);
});