我嘗試做一個chrome擴展,調用我的PC中的java代碼。調用工作正常,代碼執行,但我嘗試將變量返回給Chrome擴展但不起作用。我在控制檯中看到,監聽器onDisconect
編寫控制檯消息,但監聽器onMessage
沒有。我不知道這個問題。Java和Chrome擴展,原生消息
這是我在Chrome擴展代碼:
JSON格式的清單
{
"name": "Prueba native message",
"version": "1.0",
"manifest_version": 2,
"description": "Chrome extension interacting with Native Messaging and localhost.",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"icons": {
},
"permissions": [
"nativeMessaging"
]
}
background.js
var port = chrome.runtime.connectNative('com.app.native');
function message(msg) {
console.warn("Received" + msg);
}
function disconect() {
console.warn("Disconnected");
}
console.warn("se ha conectado");
port.onMessage.addListener(message);
port.onDisconnect.addListener(disconect);
port.postMessage({text: "Hello, my_application"});
console.warn("message send");
在這裏,我的本地文件。
蝙蝠
cd C:\Users\pc\IdeaProjects\eDNI\out\production\code && java Main
Main.java
public class Main {
public static void main(String argv[]) throws IOException {
System.out.println("{\"m\":\"hi\"");
}
}
在這段代碼中,我只嘗試返回一個簡單的信息擴展。
我嘗試這一點,並沒有什麼,控制檯說的一樣,我試着改變.js文件,現在是這樣的: chrome.runtime.sendNativeMessage('com.app。本地', {text:「Hello」}, function(response){ console.log(「Received」+ response); }); 而在控制檯中的消息是「收到未定義」 –
@MarcosPires查看我的答案更新。您在清單中缺少接口類型'stdio'。您正在使用'System.out',它等同於'stdout'。 –
@Peter如果你說要包含本地文件的'type'in清單,我有它,格式是: '{「name」:「com.app.native」, 「description」:「您的設定「, 」路徑「:」C:/用戶/ PC /桌面/原生信息/ native_app/prueba.bat「, 」type「:」stdio「, 」allowed_origins「:[ \t」chrome-extension :// dmclpldhhlhdmkmikdmgpcjpcnpikgpp /「 ] }' 對不起,以前沒有包括。我不明白你用'System.out'它可以或我錯了嗎? –