Chrome 中的 Android intent

您可以使用 Android intent 直接从 Android 设备上的网页启动应用。您可以实现用户手势以使用自定义架构启动应用,也可以使用 intent: 语法。

构建 intent 锚点并将其嵌入页面中,以便用户可以选择启动应用。这样就可以灵活地启动应用的方式和时间,这意味着您可以使用 Intent Extra 向应用传递信息。

基于 intent 的 URI 的基本语法如下:

intent:  
   HOST/URI-path // Optional host  
   #Intent;  
      package=\[string\];  
      action=\[string\];  
      category=\[string\];  
      component=\[string\];  
      scheme=\[string\];  
   end;

如需详细了解如何解析,请参阅 Android 源代码

当 intent 未解析或外部应用无法启动时,用户可能会被重定向到回退网址。您可以使用 intent extra 指定后备网址:

S.browser_fallback_url=[encoded_full_url]

使用 S.<name> 定义 intent extra。此特定 extra 是向后兼容的。Chrome 会移除 browser_fallback_url,因此目标应用不会看到此值。

在以下情况下,Chrome 不会启动外部应用:

  • 无法解析 intent。换言之,任何应用都无法处理该 intent。
  • 有一个 JavaScript 计时器试图在不使用用户手势的情况下打开应用。

示例

以下是启动 Zxing 条形码扫描程序应用的 intent:

intent:  
   //scan/  
   #Intent;  
      package=com.google.zxing.client.android;  
      scheme=zxing;  
   end;

如需启动 Zxing 条形码扫描器应用,请在锚点上对 href 进行编码:

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

请参阅 Android Zxing 清单,其中定义了软件包和主机。

如果指定后备网址,完整网址将如下所示:

   <a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">
    Take a QR code
  </a>

现在,如果无法找到应用、由无需用户手势的 JavaScript 触发链接或者我们没有启动外部应用的其他情况,网址就会将用户转到 zxing.org

注意事项

如果您使用包含 Extras 的 intent 调用 Android activity,也可以添加这些详细信息。

只能使用此方法调用具有类别过滤条件 android.intent.category.BROWSABLE 的 activity,因为这表明可以从浏览器中安全打开应用。

在以下情况下,Chrome 不会针对给定的 intent URI 启动外部应用:

  • Intent URI 是从输入的网址重定向的;
  • intent URI 无需用户手势即可启动。