Dav*_*vid 5 url hyperlink google-drive-api
我正在尝试创建一个网页,其中嵌入了多个Google文档.我的问题是,当在Android设备上查看此页面时,会向用户显示基于Web的Google Docs编辑器.因此,我希望在我的页面上显示一个链接,该链接会在用户手机上打开原生Google Drive应用,因此他/她可以在那里编辑文档.搜索了两个小时后,我无法弄清楚如何创建链接,这会自动在本机应用程序中打开文档.
我成功地使用以下链接在Google市场中查看Google云端硬盘应用:
市场://细节ID = com.google.android.apps.docs
我也尝试过
Google云端硬盘://没有想法,什么对写在这里
但这也没有成功.
这是可能的,还是仅适用于iOS?
Ser*_*sov 10
似乎没有一个好方法可以做你想要的(至少根据我对Android 4.0.4的测试;可能情况与其他版本不同).
http:或https:链接由应用程序链接理论上,只使用https://docs.google.com/...文档的链接应该适合您.根据StackOverflow上的这个答案,拦截http:或https:URL是从Android浏览器打开链接时启动应用程序的正确方法.该谷歌云端硬盘应用正是这样做的-它注册的意图过滤器https://drive.google.com,https://docs.google.com,https://spreadsheets.google.com和一堆类似的URL(包括http:使用相同的主机名).这实际上有效 - 当使用Android浏览器时,试图打开指向https://drive.google.com选择器弹出窗口中的结果的链接,其中包含列表中的Google Drive应用程序(以及所有已安装的浏览器); 选择Google云端硬盘可以根据需要在Google云端硬盘编辑器中打开文档.
但问题是这种截获的HTTP [S] URL 只能在Android浏览器中运行 - 我无法找到任何可以在关注此类链接时显示应用选择器的第三方浏览器.我测试了Chrome,Dolphin,Firefox,Light Browser,Opera(包括经典和迷你),UC浏览器,所有这些都在内部打开了链接,而不是提供将其传递给Google Drive应用程序.
intent:URI方案还有另一种方法可以创建一个启动Android应用程序的链接 - 使用intent:URI方案.我无法找到intent:URI格式的适当文档; 当然,可以使用生成这种URI的函数的源代码.
对于您的测试文档:
https://docs.google.com/document/d/1zSzDnV-90Ke3dzCCJ2CZ6iQ3JQ3F1hL1udGDqbNwwbY/edit?usp=sharing
Run Code Online (Sandbox Code Playgroud)
intent:在Google云端硬盘应用中打开它的相应链接将是:
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
Run Code Online (Sandbox Code Playgroud)
带有此URI的测试链接位于单独的页面上(此处无法生成指向此类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
Run Code Online (Sandbox Code Playgroud)
这里scheme=https对应https:于原始URL,因此如果要转换普通http:URL,则此字段应为scheme=http.并且package=com.google.android.apps.docs是应该处理链接的应用程序的包名称.
现在,当遵循此类链接时,浏览器应直接打开Google云端硬盘应用(不显示应用选择器).但是,如果未安装该应用程序,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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,行为应与https:在Android浏览器中关注拦截链接时的行为相同- 将显示带有Google云端硬盘应用的应用选择器和所有浏览器应用,如果未安装Google云端硬盘应用,则用户不会被重定向到从Market安装它.
与拦截http:和https:链接不同,intent:链接适用于更广泛的Android浏览器应用程序; 不幸的是,有些浏览器不支持它们.我的测试结果:
而且,显然,非Android浏览器根本不支持此类链接,因此如果您的页面也必须可用于其他客户端,则需要使用某种浏览器嗅探.
某些应用程序使用完全非标准的URI方案,这些方案也可能适用于第三方浏览器.但是,Google云端硬盘应用不会这样做,因此此解决方案不适合它(除非有人创建了一个"桥接"应用,它只是将请求传递给Google云端硬盘应用).
market:由于安全问题,一些浏览器也可能不允许非标准URI方案,除了一些白名单(例如); 我没试过测试这个.
| 归档时间: |
|
| 查看次数: |
7987 次 |
| 最近记录: |