【问题标题】:How to launch a Chrome App from a Chrome Extension?如何从 Chrome 扩展程序启动 Chrome 应用程序?
【发布时间】:2014-06-13 05:30:54
【问题描述】:

应用程序通常从 chrome://apps/按钮 Chrome 应用程序 打开,但如何从外部 Chrome 扩展程序打开?

我的分机:

->manifest.json
->background.js

我的应用:

->manifest.json
->background.js

那么,如何从我的扩展程序启动我的应用

【问题讨论】:

    标签: javascript google-chrome google-chrome-extension google-chrome-app


    【解决方案1】:

    如果您同时拥有这两个项目,则可以在收到扩展程序的消息时使用消息传递来打开应用程序窗口。这没有权限警告会排斥像管理这样的用户。 https://developer.chrome.com/extensions/messaging

    首先,将其添加到两个清单中:

    "externally_connectable": { "ids": [ "idoftheotheritem" ] }
    

    然后,在您的应用中监听消息并创建一个应用窗口:

    chrome.runtime.onMessageExternal.addListener(function() {
      chrome.app.window.create("app.html");
    }
    

    最后,从扩展发送:

    chrome.runtime.sendMessage("idoftheapp", { launch: true })
    

    【讨论】:

    • 好建议!如果可行,我建议 OP 更改接受的答案
    【解决方案2】:

    在文档中:chrome.management.launchApp

    chrome.management.launchApp("YourAppsId", function(){
      if(chrome.runtime.lastError) console.error(chrome.runtime.lastError);
      else console.log("App launched");
    });
    

    您将需要"management" 权限。


    编辑:请参阅 Daniel Herr 的 answer,了解侵入性较小的解决方案。

    【讨论】:

    • @Xan:请不要使用 RTFM。
    • @marlar 完成。还有什么?