如何在Android的Chrome浏览器中通过链接打开任何应用程序?我需要对A Href链接做什么?

15
我想从我的网页浏览器里打开第三方应用程序,但我没有清单文件或其他东西。我有一个网页,我想要一个链接来打开第三方应用程序,例如Twitter或Opera。请问如何设置锚点链接来打开该应用程序呢?谢谢。

可能是重复的问题:Android自定义URL打开App,就像在iOS中一样 - Graham Borland
1
@GrahamBorland 我认为这是有很大不同的。 - Kinlan
2个回答

36

意图基础URI的基本语法如下:

intent:
   HOST/URI-path // 可选主机
   #Intent;
      package=[string];
      action=[string];
      category=[string];
      component=[string];
      scheme=[string];
   end;

解析详见Android源码

要启动 ZXing 条形码扫描器应用,您可以将 href 编码如下:

<p>
  <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end">Take a qr code</a><br>

  <a href="intent://scan/?ret=http%3A%2F%2Fexample.com#Intent;scheme=zxing;package=com.google.zxing.client.android;end">Take a qr code = 10px x 10px</a><br>

  <a href="intent:play/?mediaset=android-phone-rtmp-high&amp;playlisturl=http://www.bbc.co.uk/iplayer/playlist/bbc_one_london#Intent;scheme=bbcmediaplayer;package=air.uk.co.bbc.android.mediaplayer;end">Launch BBC</a>
</p>

Android manifest 定义了 scheme 为 zxing,package 为 com.google.zxing.client.android,host data 为 scan

如果你要启动的 activity 包含 extra 数据,也可以一并包含。

只有拥有类别过滤器 android.intent.category.BROWSABLE 的 activity 才能使用这种方法调用,因为它表明应用程序可以安全地从浏览器中打开。


8
也许我错了,但是我觉得缺少对 https://developer.chrome.com/multidevice/android/intents 的引用。 - klaus
浏览器如何获取ZXing扫描的条形码? - Cristian Ciupitu
如果你想在扫描仪调用返回URL时获取代码,那么在返回(或回调)URL中,你必须添加一个带有文本“{RAWCODE}”的占位符。例如:http://www.example.com/scan.html?code={CODE}。扫描应用程序将使用实际代码替换{CODE}并回调到该URL。其余的就取决于你了。希望能对某些人有所帮助。 - Victor Salvans Montesó
@Kinlan,我看了你的博客。你有可下载的源代码吗?我可以运行它来测试从浏览器调用意图吗? - gonzobrains
@Kinlan,我试图将一个 URL(https://example.com/path)作为URI路径/HOST传递。在这种情况下,我的URI格式应该是什么?我尝试了`intent://example.com/path#Intent;...;end`但不起作用。 - mjsxbo

2

这是无法通用实现的。如果其他应用程序有自定义的URL处理程序,那么您可以打开该URL,否则您无法打开。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接