网址方案:如何创建链接,该链接将在Google云端硬盘应用中打开文档

时间:2013-07-09 21:47:01

标签: google-drive-api hyperlink url

我正在尝试创建一个网页,其中嵌入了多个Google文档。我的问题是,当在Android设备上查看此页面时,会向用户显示基于Web的Google Docs编辑器。因此,我希望在我的页面上显示一个链接,该链接会在用户手机上打开原生Google Drive应用,因此他/她可以在那里编辑文档。搜索了两个小时后,我无法弄清楚如何创建链接,这会自动在原生应用中打开文档。

我成功地使用以下链接在Google市场中查看Google云端硬盘应用:

  

市场://细节ID = com.google.android.apps.docs

我也尝试了

  

Google云端硬盘://没有想法,什么对写在这里

但这也没有成功。

这有可能,还是仅适用于iOS?

1 个答案:

答案 0 :(得分:10)

似乎没有一个好方法可以做你想要的事情(至少根据我对Android 4.0.4的测试;可能情况与其他版本不同)。

使用应用拦截的http:https:个链接

理论上,仅使用文档的https://docs.google.com/...链接应该适合您。根据{{​​3}},拦截http:https:网址是从Android浏览器打开链接时启动应用的正确方法。 Google云端硬盘应用就是这样做的 - 它会为https://drive.google.comhttps://docs.google.comhttps://spreadsheets.google.com和一堆类似的网址(包括具有相同主机名的http:)注册意向过滤器。这实际上有效 - 当使用现有的Android浏览器时,尝试打开指向https://drive.google.com的链接会导致选择器弹出窗口中包含列表中的Google云端硬盘应用(以及所有已安装的浏览器);选择Google云端硬盘可以根据需要在Google云端硬盘编辑器中打开文档。

但问题是此类截获的HTTP [S]网址只能在Android浏览器中运行 - 我无法找到任何可以在关注时显示应用选择器的第三方浏览器这样的链接。我测试了Chrome,Dolphin,Firefox,Light Browser,Opera(包括Classic和Mini),UC浏览器,所有这些都在内部打开了链接,而不是提供将其传递到Google Drive应用程序。

使用intent: URI方案

还有另一种方法可以创建一个启动Android应用的链接 - 使用intent: URI方案。我无法找到intent: URI格式的正确文档;当然,this answer on StackOverflow可用。

source code for the function which generates such URIs

https://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing

在Google云端硬盘应用中打开它的相应intent:链接将是:

intent://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing#Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.google.android.apps.docs;end

此URI的测试链接为your test document(此处无法生成指向此类URI的实际链接。)

转换过程如下:

  1. https:替换为intent:

  2. 附加意图参数:

    #Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;package=com.google.android.apps.docs;end
    

    此处scheme=https对应原始网址中的https:,因此,如果您要转换普通http:网址,则此字段应为scheme=httppackage=com.google.android.apps.docs是应该处理链接的应用的包名称

  3. 现在,当遵循此类链接时,浏览器应直接打开Goog​​le云端硬盘应用(不显示应用选择器)。但是,如果未安装该应用,Android将改为打开Market应用,并搜索指定的包名称,以便用户可以安装所需的应用。

    也可以在没有intent:参数的情况下生成package链接:

    intent://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing#Intent;scheme=https;action=android.intent.action.VIEW;category=android.intent.category.DEFAULT;category=android.intent.category.BROWSABLE;end
    

    在这种情况下,行为应与在Android浏览器中关注截获的https:链接时的行为相同 - 带有Google云端硬盘应用的应用选择器和所有浏览器应用都将显示,如果是谷歌未安装云端硬盘应用,用户不会被重定向到从市场安装它。

    与拦截的http:https:链接不同,intent:链接适用于更广泛的Android浏览器应用;不幸的是,有些浏览器不支持它们。我的测试结果:

    • 作品:现货Android 4.0.4浏览器,Chrome,Light Browser,Opera,Opera Classic。
    • 不起作用:Dolphin,Firefox(on a separate page),UC浏览器。

    显然,非Android浏览器根本不支持此类链接,因此如果您的网页也必须可用于其他客户端,则需要使用某种浏览器嗅探。

    使用自定义URI方案

    某些应用使用完全非标准的URI方案,这些方案也可能适用于第三方浏览器。但是,Google云端硬盘应用不会这样做,因此此解决方案不适合它(除非有人创建了一个“桥接”应用,只是将请求传递给Google云端硬盘应用)。

    由于安全问题,某些浏览器也可能禁止使用非标准URI方案,但有些白名单除外(例如market:);我没试过测试这个。