You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Deep Link是否正常工作?是否有类似权限检测的默认校验方法?

检测应用是否支持Deep Link的方法

核心思路

Deep Link的支持依赖于应用Manifest中配置的<intent-filter>,可以通过Android的PackageManager工具类来校验,类似权限检测的思路,以下是两种实用方法:


方法1:检测任意应用是否支持指定Deep Link

通过构造匹配Deep Link的Intent,查询系统中是否有Activity能响应这个Intent(需确保匹配默认启动规则):

fun isDeepLinkSupported(context: Context, deepLinkUri: String): Boolean {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse(deepLinkUri))
    // MATCH_DEFAULT_ONLY 确保匹配带有 CATEGORY_DEFAULT 的 intent-filter(外部调用Deep Link的必要条件)
    val resolveInfos = context.packageManager.queryIntentActivities(
        intent,
        PackageManager.MATCH_DEFAULT_ONLY
    )
    return resolveInfos.isNotEmpty()
}

使用时直接传入目标Deep Link的URI即可,返回true表示存在可响应的应用/Activity。


方法2:校验自身应用的Deep Link配置是否正确

如果要检查自己的应用是否正确配置了某个Deep Link,可以直接解析Manifest中的Intent Filter:

fun checkOwnAppDeepLink(context: Context, targetScheme: String, targetHost: String): Boolean {
    val packageInfo = context.packageManager.getPackageInfo(
        context.packageName,
        PackageManager.GET_ACTIVITIES or PackageManager.GET_META_DATA
    )
    packageInfo.activities?.forEach { activityInfo ->
        activityInfo.intentFilters?.forEach { filter ->
            // 校验scheme和host是否匹配
            if (filter.schemes?.contains(targetScheme) == true 
                && filter.hosts?.contains(targetHost) == true) {
                return true
            }
        }
    }
    return false
}

如果你的Deep Link需要校验path或pathPattern,可以在遍历Intent Filter时额外添加对应参数的判断逻辑。


补充说明

  • 方法1适用于检测第三方应用是否支持某个Deep Link,比如判断用户是否安装了能打开特定链接的APP;
  • 方法2适合自检,避免Manifest配置遗漏(比如忘记添加CATEGORY_DEFAULT)导致Deep Link失效;
  • 若Deep Link涉及自定义Scheme,注意部分系统可能对非HTTP/HTTPS Scheme有额外限制。

内容的提问来源于stack exchange,提问作者Bret Joseph

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:22:09