2013-07-09 46 views
4

我正在尝试创建一个网页,其中嵌入了多个Google文档。我的问题是,当在Android设备上查看此页面时,用户会看到可怕的基于Web的Google文档编辑器。因此,我希望在我的网页上建立一个链接,在用户手机上打开本机Google云端硬盘应用,以便他/她可以在此处编辑文档。搜索两个小时后,我无法弄清楚如何创建链接,该链接会自动在本机应用程序中打开文档。网址方案:如何创建链接,该链接将在Google云端硬盘应用中打开文档

我成功了使用下面的链接查看在谷歌市场的谷歌云端硬盘应用:

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

我也尝试

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

但那也没有成功。

这是可能的,还是这只适用于iOS?

+0

我认为谷歌云端硬盘会自动处理链接以.doc,.xls的,.PDF,等结束......这是没有必要有Google云端硬盘://在链路的开始。 –

+0

@Shywim谢谢你的回答。我已经尝试过这一点,但我无法获取任何Google文档以.doc结尾的网址。以下是失败尝试的一个示例:https://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing 在我的android上打开该链接并未在Google云端硬盘应用中打开该文档 – David

+1

使用Android 4.0浏览器时,打开链接会显示一个选择器弹出窗口,其中提供了除所有已安装的浏览器之外的Google Drive应用程序。但是,在我尝试过的任何其他第三方浏览器(Chrome,Dolphin,Firefox,Opera,UC Browser)中都没有发生这种情况 - 他们只显示Google Docs的网络版。 –

回答

10

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

使用一个应用程序

理论上拦截http:https:链接,只是用https://docs.google.com/...链接的文件应为你工作。根据this answer on StackOverflow,拦截http:https:网址是从Android浏览器打开链接时启动应用的正确方法。 Google Drive应用正是如此 - 它为https://drive.google.comhttps://docs.google.comhttps://spreadsheets.google.com和一堆类似的URL(包括具有相同主机名的http:)注册了意图过滤器。这实际上有效 - 当使用股票Android浏览器时,尝试打开指向https://drive.google.com的链接会导致列表中包含Google Drive应用的选择器弹出(与所有已安装的浏览器一起);只要您愿意,选择Google云端硬盘结果即可在Google云端硬盘编辑器中打开文档。

但问题是,这种拦截的HTTP [S]的URL只股票Android浏览器工作- 我一直没能找到任何第三方浏览器下面这样的链接时可能显示的应用程序选择器。我测试了Chrome,Dolphin,Firefox,轻量级浏览器,Opera(包括Classic和Mini),UC浏览器,并且它们都在内部打开链接,而不是将其传递到Google Drive应用。

使用intent: URI方案

还有另一种方法,使这将启动一个Android应用程序的链接 - 使用intent: URI方案。我一直无法找到关于intent: URI格式的适当文档;当然,source code for the function which generates such URIs可用。

对于your test document

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

其打开它在谷歌硬盘应用相应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的测试链路是on a separate page(这是不可能在这里建立一个指向这个URI的实际链接)。

转换的过程如下:

  1. 替换intent:开始https:

  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: URL,这个领域应该是scheme=http。并且package=com.google.android.apps.docs是应该处理该链接的应用的包名

现在,当遵循这样的链接时,浏览器应直接打开Goog​​le Drive应用程序(不显示应用程序选择器)。但是,如果未安装该应用程序,则Android将打开Market应用程序,并执行搜索指定的软件包名称,以便用户可以安装所需的应用程序。

也可以使不package参数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;end 

在这种情况下的行为应该是一样的,当拦截https:链接之后股票的Android浏览器 - 应用程序Google Drive应用和所有浏览器应用都将显示选择器,并且如果未安装Google云端硬盘应用,用户将不会被重定向到Market安装。

不同于截取http:https:链接,链接intent:在更宽的范围Android浏览器的应用程序的工作;不幸的是,一些浏览器不支持它们。我的测试结果如下:

  • Works:stock Android 4.0.4浏览器,Chrome,Light Browser,Opera,Opera Classic。
  • 不起作用:海豚,火狐(feature request is pending),UC浏览器。

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

使用自定义的URI方案

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

一些浏览器也可以禁止非标准的URI方案除了一些白名单中的人(如market:)由于安全问题;我没有试图去测试这个。

+0

你很棒。我编辑了你的答案,包括一个带有实际工作链接的测试页,它工作了!非常感谢你做的这些! – David

+0

不适用于android 4.2.2上的chrome 47。直接打开谷歌播放。 – lembas

相关问题