Deeplink的打开方式

该代码段展示了如何在Android中实现DeepLink的打开功能。通过`Intent.parseUri()`解析链接,并设置新任务标志以启动Activity。如果解析或启动过程中出现异常,日志会捕获并记录错误信息。
//这个方法就是我们deepLink的打开,只要传入要打开的链接就行
public static void openDeeplink(Context context, String deepLink) {
        Intent intent = null;
        if (null == context || TextUtils.isEmpty(deepLink))
            return;
        try {
            intent = Intent.parseUri(deepLink, Intent.URI_INTENT_SCHEME);
        } catch (URISyntaxException e) {
//            Log.e(TAG, "URISyntaxException: " + e.getLocalizedMessage());
        }
        if (intent != null) {
            intent.setComponent(null);
            try {
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
//                Log.e(TAG, "ActivityNotFoundException: " + e.getLocalizedMessage());
            }
        }

    }
### HarmonyOS 中 Deep Link 的实现方式 在 HarmonyOS 中,Deep Link 是一种通过统一资源标识符(URI)直接跳转到应用特定页面的能力。这种机制常用于从外部(如网页、其他应用)打开应用内的某个指定 Ability 页面,提升用户体验并支持营销推广等场景[^1]。 #### 1. 定义 Deep Link URI 模式 开发者需要在应用的配置文件 `config.json` 中为目标 Page Ability 配置 URI 路由规则。该规则定义了哪些 URI 可以触发该 Ability 的启动,并允许系统识别和路由请求。 ```json { "module": { "abilities": [ { "name": ".SecondAbility", "uri": { "scheme": "example", "host": "deeplink", "paths": ["/page1", "/page2"] } } ] } } ``` 上述配置表示当用户点击类似 `example://deeplink/page1` 的链接时,系统将启动 `SecondAbility` 页面[^1]。 #### 2. 处理 Deep Link 请求 当应用被 Deep Link 启动时,目标 Ability 会接收到一个包含 URI 数据的 Intent。开发者可以通过 `getIntent()` 方法获取该 Intent,并解析其中的 URI 参数以决定展示的内容或执行的操作。 ```java @Override public void onStart(Intent intent) { super.onStart(intent); String uri = intent.getUri(); if (uri != null && uri.startsWith("example://")) { // 解析 URI 并跳转至对应内容 if (uri.contains("/page1")) { // 显示 page1 内容 } else if (uri.contains("/page2")) { // 显示 page2 内容 } } } ``` 此方法确保应用可以根据传入的 URI 动态加载相应的界面或数据[^1]。 #### 3. 测试 Deep Link 行为 开发者可以使用 ADB 命令测试 Deep Link 是否正常工作: ```bash bm start-app -n "com.example.myapplication/.SecondAbility" --uri "example://deeplink/page1" ``` 该命令模拟了从外部调用 Deep Link 的行为,验证是否能够正确启动目标 Ability 并处理 URI 数据[^1]。 #### 4. 权限与安全性考虑 为了防止恶意调用,建议在配置 Deep Link 时限制访问权限。例如,在 `config.json` 中设置 `exported: true` 仅适用于需要公开访问的 Ability: ```json { "module": { "abilities": [ { "name": ".SecondAbility", "exported": true, "uri": { "scheme": "example", "host": "deeplink", "paths": ["/page1"] } } ] } } ``` 此外,应避免暴露敏感操作或数据给外部调用,确保 URI 参数经过验证和过滤,防止注入攻击或其他安全风险[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值