【问题标题】:How to access chrome app installed directory programmatically?如何以编程方式访问 chrome 应用程序安装目录?
【发布时间】:2016-09-10 14:43:39
【问题描述】:

我是 chrome 应用程序开发的新手,几天前我使用 NW 开发了基于桌面的应用程序,现在我想为 chrome 开发相同的应用程序。

这是我想要达到的目标 -

1.安装应用时,在用户的本地文件系统中创建文件夹(命名与应用名称相同)。

2.在上述文件夹中存储/访问文件和文件夹。

这些问题可以通过 chrome 的文件系统 API 解决吗?如果是,请建议我的方式。

顺便说一句,我尝试访问文件系统 api,我的清单文件如下所示-

{
  "manifest_version": 2,
  "name": "sampleApp",
  "short_name": "sampleApp",
  "description": "A Sample APP",
  "version": "0.0.1",
  "minimum_chrome_version": "38",

  "icons": {
    "16": "assets/images/icon_16.png",
    "128": "assets/images/icon_128.png"
  },
  "permissions": [
    {"fileSystem": ["write", "retainEntries", "directory","requestFileSystem"]},
    "unlimitedStorage",
    "system.network",
    "storage"
  ],
  "app": {
    "background": {
      "scripts": ["main.js"]
    }

  }
}

当我运行我的应用程序并尝试访问文件系统 api 时,我在 chrome 扩展区域看到警告-

注意:我使用的是 win 10。

fileSystem.requestFileSystem' is not allowed for specified platform

【问题讨论】:

    标签: google-chrome-app nw.js


    【解决方案1】:

    requestFileSystem 使用了错误的 API:

    仅适用于在自助服务终端会话中运行的自助服务终端应用。

    您只需致电fileSystem.chooseEntry 询问用户他希望在哪里创建该文件夹,然后保留该条目,这样您就无需再次请求许可。

    没有办法不通过chooseEntry 询问用户,但您只能这样做一次。

    一个好的fileSystem API 示例是provided by Google


    注意,您可以使用chrome.runtime.getPackageDirectoryEntry 静默请求访问您应用程序的安装文件夹(如您在标题中所要求的)。但是,此访问权限是只读的。

    如果您曾经修改过该文件夹,无论如何,Chrome 都会立即将您的应用视为“受损”而禁用,因为它会保留从 Chrome 网上应用店下载的所有文件的签名哈希。


    作为一种潜在的解决方案,如果您不希望该提示成为您的应用程序执行的第一件事,您可以在提示用户之前request a virtual filesystem。但是要写入磁盘,您需要提示。因此,以这种方式过于复杂是没有意义的 - 向用户解释您需要他/她选择保存位置。

    【讨论】:

    • 感谢您的回复,我已经尝试过早期的文件系统示例,它不能满足我的要求,我不想随时提示另存为对话框,有没有其他方法可以实现场景,可能是应用目录中不需要的其他位置。?
    • 不,在任何情况下都不允许您在没有提示的情况下直接写入访问权限。
    • 在 Kiosk 模式下,您可以获得具有写入权限的外部文件系统,无需用户提示:developer.chrome.com/apps/fileSystem#method-requestFileSystem
    • 好的,将其更正为“在任何情况下普通的 Chrome 应用程序都无法做到这一点”。信息亭应用程序是一个完全不同的类别。设置 Kiosk 应用并不比为用户回答一次提示更容易。
    猜你喜欢
    • 2012-04-30
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    相关资源
    最近更新 更多