【问题标题】:Can't launch native app from android chrome(version 49)无法从 android chrome(版本 49)启动本机应用程序
【发布时间】:2016-03-18 01:41:41
【问题描述】:

我有一个 html 页面,我想在加载此页面时启动我的原生应用程序。以下是我的代码:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://code.jquery.com/jquery-1.12.1.js"></script>
</head>
<body>
<br><br><br>
<a id="link1" style='display:none' href="baidufe://schemedemo/get/info?id=10000">test link</a>
<br>
<button onclick="launch()">Launch</button>
</body>
<script language="JavaScript">
    function launch(){
        console.log("test");
        var clickTarget = document.getElementById("link1");
        clickTarget.click();

    };
    window.onload=function(){
        launch();
    };
    </script>
</html>

但是当我在 android chrome(版本为 49)中打开此页面时,我的本机应用程序未启动。当我点击“启动”按钮时,我的原生应用程序可以成功启动。

根本原因是什么?但是我的要求是打开此页面时将启动本机应用程序,如何解决?谢谢!

【问题讨论】:

    标签: android google-chrome applinks


    【解决方案1】:

    这似乎是一种相当间接的方式来完成你想要的......而不是模拟点击事件,为什么不直接设置窗口位置并跳过一个步骤?

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    </body>
    <script>
      setTimeout(function() {
        window.location = 'baidufe://schemedemo/get/info?id=10000'
      }, 250);
    </script>
    </html>
    

    请记住,以这种方式自动重定向用户会出现大量种极端情况,如果他们没有安装您的应用,可能会显示令人讨厌的“找不到页面”错误。 p>

    【讨论】:

    • 感谢 Alex,但您的代码不起作用。 blog.tapstream.com/why-has-google-broken-deeplinking-on-android/… 用户通过手势(例如单击链接)或 iirc 从链接单击导航,随后 302 的重定向或 window.location 在手势的 100 毫秒内重定向到意图:URI 那么它应该仍然工作”。如何模拟用户手势?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多