似乎没有什么好方法可以做你想做的事(至少根据我对 Android 4.0.4 的测试;也许其他版本的情况不同)。
使用被应用拦截的http: 或https: 链接
理论上,只需使用文档的https://docs.google.com/... 链接就可以了。根据this answer on StackOverflow 的说法,从Android 浏览器打开链接时,拦截http: 或https: URL 是启动应用程序的正确方法。 Google Drive 应用正是这样做的——它为https://drive.google.com、https://docs.google.com、https://spreadsheets.google.com 和一堆类似的 URL(包括具有相同主机名的http:)注册了意图过滤器。这实际上是可行的——当使用普通的 Android 浏览器时,尝试打开指向 https://drive.google.com 的链接会导致选择器弹出,其中包含 Google Drive 应用程序(以及所有已安装的浏览器);选择 Google Drive 会根据需要在 Google Drive 编辑器中打开文档。
但问题是,这种被截获的 HTTP[S] URL只能在普通的 Android 浏览器中工作——我找不到任何第三方浏览器可以在关注时显示应用程序选择器这样的链接。我测试了 Chrome、Dolphin、Firefox、Light Browser、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
在 Google Drive 应用程序中打开它的相应 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 的实际链接)。
转换过程如下:
将开头的https: 替换为intent:。
-
附加意图参数:
#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对应原始URL中的https:,所以如果你想转换一个普通的http: URL,这个字段应该是scheme=http。 package=com.google.android.apps.docs 是应该处理链接的应用的包名。
现在,当点击此类链接时,浏览器应直接打开 Google 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
在这种情况下,行为应该与在普通 Android 浏览器中跟踪截获的 https: 链接时的行为相同 - 将显示带有 Google Drive 应用和所有浏览器应用的应用选择器,如果 Google Drive 应用未安装,用户将不会被重定向到从 Market 安装它。
与截获的http: 和https: 链接不同,intent: 链接适用于更广泛的 Android 浏览器应用程序;不幸的是,一些浏览器不支持它们。我的测试结果:
而且,显然,非 Android 浏览器根本不支持此类链接,因此如果您的页面也必须可供其他客户端使用,则您需要使用某种浏览器嗅探。
使用自定义 URI 方案
某些应用使用完全非标准的 URI 方案,这些方案也可能适用于第三方浏览器。但是,Google Drive 应用程序不这样做,因此该解决方案不适合它(除非有人创建了一个“桥”应用程序,它只是将请求传递给 Google Drive 应用程序)。
出于安全考虑,某些浏览器还可能禁止非标准 URI 方案,除了一些列入白名单的方案(例如 market:);我没有尝试对此进行测试。