从重定向而不是链接打开android应用

时间:2019-01-26 00:59:54

标签: android android-studio

尝试深层链接并打开我的应用时遇到问题。我有以下代码,这是我确定是否有ios用户或android的方式。如果是android,那么我想重定向用户以打开他们的应用(如果已安装)。

问题在于,重定向到company://open.me/的应用无法打开

如果我创建手动链接,如

<a href="company://open.me/">Open Me</a>

这很好,可以打开我的应用。

有帮助吗?

<script>
if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
    location.replace("company://");
    setTimeout(function() {
        if (!document.webkitHidden) {
            location.replace("https://www.company.com");
        }
    }, 25);
} else if ((navigator.userAgent.match(/android/i)) || (navigator.userAgent.match(/Android/i))) {
    window.location = "company://open.me/";
} else {
    location.replace("https://www.company.com");
}
</script>

清单

<intent-filter>
    <data android:scheme="company" android:host="open.me" />
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

2 个答案:

答案 0 :(得分:0)

我认为您应该使用本文所述的“intent:”语法。 https://developer.chrome.com/multidevice/android/intents

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

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

答案 1 :(得分:0)

我认为您需要更改window.location的调用方式。

这将起作用:

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
    <script>
function newDoc() {
  window.location.assign("company://open.me/")
}
</script>
  </head>
  <body>
    <a href="company://open.me/">deep link</a>

<input type="button" value="Load new document" onclick="newDoc()">
  </body>
</html>