本帖最后由 p1s1lver 于 2023-4-13 20:57 编辑
在 Android 设备自动化的过程中,有时候会需要提取 deep linking 直接跳转而不是做过多的 UI 操作,这里进行了脚本的封装,可以直接定位代码中的包名,从而找到对应的解析逻辑,编写 deeplink
- Android Deep Linking 是一种允许应用程序通过链接打开特定页面的技术,用于提高用户体验。
- Android Deep Linking 工作原理:通过在 `AndroidManifest.xml` 中注册 URI 模式来实现的。当用户点击一个链接时,Android 系统会检查链接是否与已注册的 URI 模式匹配,匹配成功自动打开。
AndroidManifest.xml 文件中的 URI 模式定义:`AndroidManifest.xml` 中根据如下规则设定,定义 app 可以处理的 URI 格式的字符串
1. activity 标签中添加 `intent-filter` 标签,并在其中添加 `action`、`category` 和 `data` 标签
2. action 标签的值必须为 `android.intent.action.VIEW`
3. category 标签的值必须包含 `android.intent.category.DEFAULT` 和 `android.intent.category.BROWSABLE`
4. data 标签的值必须包含 `android:scheme`、`android:host` 和 `android:pathPrefix`
[XML] 纯文本查看 复制代码 <activity android:name=".MainActivity">
<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="http"
android:host="example.com"
android:pathPrefix="/product" />
</intent-filter>
</activity>
这里对该逻辑进行了封装。
项目地址:https://github.com/p1s1lver/AndroidReverseScripts/tree/master/deeplink_extractor
但是其实很多时候,App 使用的是 Intent-Filter 机制动态注册的,这篇帖子也只是个笔记帖 |