通过Chrome打开Android应用a href - 点击事件

时间:2017-09-11 12:13:23

标签: javascript android google-chrome android-intent intentfilter

我正在使用Android应用并尝试使用浏览器中的href来打开我的应用。我试了好几次,发现了一些有趣的东西(或者说我不够聪明)。

当我使用Android Mobile检测到用户时,我将触发href的click事件,然后应该打开我的应用程序。 Firefox工作正常,Chrome确实会触发点击事件,但什么都不做。当我单独点击一个href(用我的手指)时,它可以工作。所以现在我不知道chrome是不是可以让我通过代码打开我的应用程序,或者只是我使用错误的方式。

此外,当我将href更改为" https://www.google.com"时,Firefox和Chrome都可以正常工作。

<a id="goToMyApp" href="intent://myHost/#Intent;package=myPackage;scheme=https;end;">
click me</a>
<script type="text/javascript">
    var goToMyApp = document.getElementById("goToMyApp");
    if (navigator.userAgent.match(/Android/)) {
        setTimeout("goToMyApp.click()",1000);
    }
</script>

这是我在AndroidManifest.xml中的intent-filter,但我认为不存在问题。

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="https" android:host="myHost" android:path="/"/>
</intent-filter>

有没有人对此有任何想法?

修改

我在这里再次阅读了有关Android Intents with Chrome的文档:https://developer.chrome.com/multidevice/android/intents并最终在页面底部看到了评论。

  

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

     
      
  • 从输入的URL重定向Intent URI时。
  •   
  • 在没有用户手势的情况下启动Intent URI。 (这是我想要做的)
  •   

我认为正是由于安全政策,Chrome不会让页面通过代码启动意图。这解释了为什么我可以通过手势而不是代码打开我的应用程序。

我会希望这个问题可以帮助其他人尝试做同样的事情。

1 个答案:

答案 0 :(得分:1)

<intent-filter>
<data android:scheme="anton" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

答案在此处进一步详细解释:https://appstudio.ca/blog/index.php/2017/09/11/open-the-android-app-using-the-link/