我正在使用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不会让页面通过代码启动意图。这解释了为什么我可以通过手势而不是代码打开我的应用程序。
我会希望这个问题可以帮助其他人尝试做同样的事情。
答案 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/