Android 12 上的 AppLinks - 仅打开浏览器

Posted

技术标签:

【中文标题】Android 12 上的 AppLinks - 仅打开浏览器【英文标题】:AppLinks on Android 12 - opens browser only 【发布时间】:2022-01-13 11:51:20 【问题描述】:

我有以下清单代码:

<activity
        android:name=".InterceptorActivity"
        android:launchMode="singleTask"
        android:parentActivityName=".HomeActivity"
        tools:ignore="UnusedAttribute"
        android:theme="@style/Theme.Startup"
        android:exported="true">

        <intent-filter android:autoVerify="true">
            <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"/>
            <data android:scheme="http"/>
            <data android:host="www.mysite.com"/>

            <data android:pathPrefix="/myPage"/>
            <data android:pathPrefix="/myFavourites"/>
       </intent-filter>
    </activity>

assetlinks.json 看起来没问题并且上传正确。但是所有应用链接仍然只在浏览器中打开,我看到,该应用支持该链接,但未选中。

还有命令 "adb shell pm get-app-links "com.myapp.android" 返回

com.myapp.android:
ID: 893......
Signatures: [13:03....DA]
Domain verification state:
  www.myapp.com: legacy_failure

为什么?请帮忙。

【问题讨论】:

这似乎至少有一个问题in the Android issuetracker 还有域验证状态:www.myapp.com: legacy_failure。会不会也是因为那些错误@Michael? 【参考方案1】:

我确定您已经访问了以下链接:https://developer.android.com/studio/write/app-link-indexing

稍微改进清单以清理代码

<intent-filter android:autoVerify="true" tools:node="merge">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="$hostName" android:pathPrefix="/auth/login" android:scheme="https"/>

检查您的assetlinks.json 文件https://DOMAIN.well-known/assetlinks.json

我遇到了 Apple M1 芯片的问题,一个在基于英特尔的机器上工作的链接,我的理论是 Android Studio 没有验证 M1 机器上的应用程序链接

【讨论】:

是的,我都做了。但它仍然无法正常工作:)【参考方案2】:

原因是文件语法不正确。 正确的是:

[
  
    "relation": [
      "delegate_permission/common.get_login_creds"
    ],
    "target": 
      "namespace": "web",
      "site": "siteurl"
    
  ,
  
    "relation": [
      "delegate_permission/common.get_login_creds"
    ],
    "target": 
      "namespace": "android_app",
      "package_name": "com.my.app.android",
      "sha256_cert_fingerprints": [
        "B4:...:9M"
      ]
    
  ,
  
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": 
      "namespace": "android_app",
      "package_name": "com.my.app.android",
      "sha256_cert_fingerprints": [
        "B4...9M"
      ]
    
  ,
  
    "relation": [
      "delegate_permission/common.handle_all_urls"
    ],
    "target": 
      "namespace": "android_app",
      "package_name": "com.my.app.android.dev",
      "sha256_cert_fingerprints": [
        "BK...9Q"
      ]
    
  
]

【讨论】:

如果不是语法错误,还有其他解决legacy_failure错误的建议:***.com/questions/68144323/… 嗨,我的 JSON 文件中只有最后一部分。关于开发构建。它不工作。你能帮帮我吗? Sagar,您需要检查文件中的每个字母。我的情况是“common.handle.handle_all_urls”(“handle”两次)。还要检查你的 ha256_cert_fingerprints,它应该完全是你来自 Android Studio 的。您也可以调查此链接:developer.android.com/training/app-links/…,以及此链接生成器和在线测试器:developers.google.com/digital-asset-links/tools/generator

以上是关于Android 12 上的 AppLinks - 仅打开浏览器的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 AppLinks/通用链接的任何应用程序的 URI 方案?

与“applinks:”相关的域在开发中不起作用

iOS AppLinks 仅不适用于邮件应用程序

Android 应用链接尝试验证随机主机并失败

资产链接域与主机

为移动应用创建深层链接