Android Deep links

Deep links是可以让用户直接进入应用的特定部分的URI。

  • 创建,在Manifest中的activity声明中添加intent过滤器
ini 复制代码
<activity
    android:name=".MyMapActivity"
    android:exported="true"
    ...>
    <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="geo" />
    </intent-filter>
</activity>
  • 当存在多个能够处理相同scheme的应用时,app会打开一个对话框选择。

  • 被调用方使用:获取intent.data,拆分解析,组件封装,通过规则+Arouter跳转目标业务。

官方文档:developer.android.com/training/ap...

APP links:scheme为https,并且有签名等机制

  1. 准备域名和资产关联文件

    • 确保你拥有一个 HTTPS 域名,比如 www.example.com

    • 在该域名的服务器根目录下创建一个 .well-known/assetlinks.json 文件,内容类似:

      json 复制代码
      [
        {
          "relation": ["delegate_permission/common.handle_all_urls"],
          "target": {
            "namespace": "android_app",
            "package_name": "com.yourcompany.yourapp",
            "sha256_cert_fingerprints": [
              "AA:BB:CC:...:YY:ZZ"    // 你用来签名 APK 的证书指纹(SHA‑256)
            ]
          }
        }
      ]
    • 部署后,在浏览器访问 https://www.example.com/.well-known/assetlinks.json 能拿到该 JSON。

  2. 在 AndroidManifest.xml 中声明 Intent Filter

    在你希望处理 App Link 的 Activity 节点里添加:

    xml 复制代码
    <activity android:name=".YourDeepLinkActivity">
      <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" />
    
        <!-- 匹配你的 HTTPS 链接 -->
        <data
          android:scheme="https"
          android:host="www.example.com"
          android:pathPrefix="/applink" />
      </intent-filter>
    </activity>
    • android:autoVerify="true":安装时系统自动向服务器验证 assetlinks.json
  3. 签名与构建

    • 用与你在 assetlinks.json 中声明的同一套发布签名(release keystore)对 APK 进行签名。
    • 安装到设备或模拟器上。
  4. 系统验证

    • 安装 APK 后,Android 框架会向 https://www.example.com/.well-known/assetlinks.json 发起请求,检查 package_name 与证书指纹是否匹配。
    • 验证成功后,这个 App 就被注册为该域名的"所有者",当用户点击符合规则的链接时会优先唤起你的 App。
  5. 测试你的 App Link

    • 命令行测试

      sql 复制代码
      adb shell am start \
        -a android.intent.action.VIEW \
        -c android.intent.category.BROWSABLE \
        -d "https://www.example.com/applink/page/123"
    • 检查验证状态

      arduino 复制代码
      adb shell pm get-app-links com.yourcompany.yourapp

      或(Android 11+)

      css 复制代码
      adb shell pm verify-app-links --re-verify com.yourcompany.yourapp

      查看输出中是否有 verified

  6. 在代码中处理跳转

    • YourDeepLinkActivityonCreate()/onNewIntent() 中,用 intent.data 拿到 Uri,再解析出 pathSegmentsqueryParameter

      kotlin 复制代码
      override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        intent.data?.let { uri ->
          val segments = uri.pathSegments   // e.g. ["applink","page","123"]
          val pageId = segments.getOrNull(2)
          // 根据 pageId 展示对应页面
        }
      }
      override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        intent.data?.let { handleDeepLink(it) }
      }
  7. 优雅回退

    • 如果 App 未安装,点击 HTTPS 链接会在浏览器打开对应网页。
    • 你也可以在网页中检测 UA 或 JS 判断,提示用户下载或跳转到应用市场。

总结

  1. 服务器端 :部署 assetlinks.json,声明包名+证书指纹。
  2. 客户端 :AndroidManifest 中配置 <intent-filter android:autoVerify="true">;用 release 签名构建并安装。
  3. 验证与测试:系统自动验证并响应点击,或用 ADB 命令手动测试。
  4. 业务处理 :在 Activity 中通过 intent.data 获取并解析 URL 参数。
相关推荐
烂不烂问厨房8 分钟前
前端自适应布局之等比例缩放
开发语言·前端·javascript
kong790692818 分钟前
环境搭建-运行前端工程
前端
CodeLinghu21 分钟前
提示词链模式:一种利用LLM大语言模型处理复杂任务的强大范式
前端·人工智能·语言模型
J2虾虾30 分钟前
关于Ant Design Vue
前端·javascript·vue.js
程序员笨鸟37 分钟前
[特殊字符] React 高频 useEffect 导致页面崩溃的真实案例:从根因排查到彻底优化
前端·javascript·学习·react.js·面试·前端框架
Highcharts.js40 分钟前
从旧版到新版:Highcharts for React 迁移全攻略 + 开发者必知的 5 大坑
前端·react.js·前端框架·编辑器·highcharts
独角鲸网络安全实验室40 分钟前
高危预警!React核心组件曝CVSS 9.8漏洞,数百万开发者面临远程代码执行风险
运维·前端·react.js·网络安全·企业安全·漏洞·cve-2025-11953
西瓜凉了半个夏~41 分钟前
React专题:react,redux以及react-redux常见一些面试题
前端·javascript·react.js
大模型教程.42 分钟前
收藏级教程:ReAct模式详解,让大模型从回答问题到解决问题
前端·人工智能·机器学习·前端框架·大模型·产品经理·react
独角鲸网络安全实验室42 分钟前
高危预警!React CVE-2025-55182 突破 RSC 防护,未授权 RCE 威胁 39% 云应用
前端·react.js·网络安全·前端框架·漏洞·rce·cve-2025-55182