¥
立即购买

Android活动意图过滤器设计

38 浏览
2 试用
0 购买
Nov 30, 2025更新

本提示词专为Android应用开发场景设计,能够根据活动的具体功能需求,智能生成符合Android规范的意图过滤器配置。它适用于深度链接、隐式意图调用、跨应用交互等多种业务场景,提供基于官方开发指南的技术实现方案,确保配置的准确性和最佳实践性。通过结构化分析活动用途,输出包含action、category、data等元素的完整过滤器定义,帮助开发者快速实现活动间的有效通信与系统集成。

意图过滤器配置

<!-- 1) HTTPS Android App Links(含域名校验) -->
<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://shop.example.com/product/<id> -->
    <data
        android:scheme="https"
        android:host="shop.example.com"
        android:pathPrefix="/product/" />

    <!-- https://shop.example.com/p/<id> -->
    <data
        android:scheme="https"
        android:host="shop.example.com"
        android:pathPrefix="/p/" />
</intent-filter>

<!-- 2) 自定义 Scheme 深度链接:demoapp://product/<id> -->
<intent-filter>
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <!-- demoapp://product/<id> 
         其中 host=product,路径至少包含一个 segment(<id>) -->
    <data
        android:scheme="demoapp"
        android:host="product"
        android:pathPattern="/.*" />
</intent-filter>

配置说明

  • 功能描述:

    • 支持从浏览器与短信点击深度链接跳转至商品详情页,覆盖两类链接:
    • 链接中允许附带 query 参数 ref、utm_source、coupon,系统会原样携带到 Intent 的 data 中,业务侧可读取和透传。
    • 当 id 缺失或非法时,应用内应跳转至首页(运行时逻辑处理)。
  • 元素解析:

    • action=VIEW:表示对“查看某资源”的通用意图,适用于打开网页/内容详情。
    • category=BROWSABLE:允许从浏览器、短信等非应用内来源发起的深度链接调用。
    • category=DEFAULT:确保在未显式指定组件名的 startActivity 调用中可被匹配。
    • data(HTTPS App Links):
      • scheme=https + host=shop.example.com:严格限定为该站点的链接,避免与其他 HTTPS 链接冲突。
      • pathPrefix=/product/ 与 /p/:限定路径前缀为两种有效路径形态。变量 不参与清单匹配,由运行时解析。
      • android:autoVerify=true:开启域名关联校验,通过后点击目标域名链接将直达应用。
    • data(自定义 scheme):
      • scheme=demoapp,host=product:与 demoapp://product/ 的结构一致。
      • pathPattern="/.*":要求至少包含一个 path segment。实际 id 的有效性在运行时校验。
    • 关于 query 参数:
      • 清单匹配不校验 query 参数。点击时系统会将完整 URI 传入 Intent.getData(),包含 ref、utm_source、coupon 等参数,业务可通过 Uri.getQueryParameter(...) 读取并透传。
  • 使用方式(集成到 AndroidManifest.xml):

    • 将上述两个 放入负责展示“商品详情页”的 Activity 节点内。
    • 由于该 Activity 需要响应隐式意图,在 Android 12+ 必须声明 android:exported="true"。示例:
      • ...上述 intent-filter 放这里...
  • 注意事项:

    • App Links 域名验证:需在 https://shop.example.com/.well-known/assetlinks.json 部署数字资产链接文件,将当前应用的应用签名指纹与包名正确配置。验证通过后,点击该域名的符合路径链接将直接打开应用。
    • 路径匹配与安全:使用 pathPrefix 精准限定到 /product/ 与 /p/,避免接管站点其他路径。由于 由运行时解析,请务必在 Activity 中校验 id 的存在性与合法性,不合规时跳转首页。
    • 避免多实例与来源一致性:
      • 建议为 ProductDetailActivity 使用 android:launchMode="singleTop",并在 onNewIntent 中统一解析深度链接与通知跳转的 Intent(保持一套解析与埋点逻辑)。
      • 通知 PendingIntent 建议使用 FLAG_ACTIVITY_CLEAR_TOP | FLAG_ACTIVITY_SINGLE_TOP,确保已存在实例被复用且不会重复创建。
      • 统一记录来源:通过 Intent.getData() 的 query 参数(如 ref、utm_source、coupon)与 getReferrer() 结合自定义 extras(如来自通知时带 source=notification)一致化埋点。
    • 兼容性:BROWSABLE 与 DEFAULT 必须同时存在,否则外部来源(浏览器/SMS)可能无法匹配;HTTPS App Links 仅在 Android 6.0+ 支持 autoVerify,低版本仍可正常匹配但不会自动“直达”。
    • 不要添加过于宽泛的匹配(如 host="*" 或仅 https 无 host),以免抢占其他站点链接或引发不必要的系统选择器冲突。

技术要点

  • 匹配优先级说明:

    • Activity 的 不使用 android:priority 来干预调度(该属性对 Activity 的隐式启动基本不生效)。Android App Links 一旦通过域名验证,将优先直达应用,无需用户选择。
    • 同一 Activity 内含多条 仅表示“或”关系,无先后优先级;业务层需自行校验路径与 id。
  • 系统版本兼容性:

    • autoVerify 从 Android 6.0(API 23)起生效;更高版本(Android 12+)在用户未更改默认首选项的情况下会直接打开已验证域名的链接。
    • Android 12+ 要求带有 的 Activity 必须声明 android:exported 属性。
    • 自定义 scheme 在所有版本可用,但不会享有域名验证的“直达”能力。
  • 安全配置建议:

    • 严格限定 host 与 path 前缀,避免接管无关链接。
    • 运行时校验 id 合法性(仅允许预期字符与长度)并对异常情况跳转首页,防止错误路由与潜在滥用。
    • 避免在清单中匹配过多 scheme/host 组合;如需扩展新路径,建议新增受控的 pathPrefix 并保持最小可用原则。
    • 不添加可执行或敏感操作的额外隐式 action,保持 Activity 仅用于“查看”资源的语义,降低被外部误用的风险。

意图过滤器配置

<!-- Handle single share: image or plain text -->
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <!-- Accept plain text shares -->
    <data android:mimeType="text/plain" />
    <!-- Accept single image shares from MediaStore/FileProvider -->
    <data android:mimeType="image/*" />
</intent-filter>

<!-- Handle multiple images share -->
<intent-filter>
    <action android:name="android.intent.action.SEND_MULTIPLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="image/*" />
</intent-filter>

配置说明

  • 功能描述:

    • Receives system/third‑party shares and opens the publishing editor.
    • Supports:
      • Single image or multiple images (primary content).
      • Plain text only.
      • Mixed content (image + text): images are primary, text prefilled into editor.
    • Reads Intent.EXTRA_TEXT, Intent.EXTRA_STREAM, Intent.EXTRA_SUBJECT.
    • Image sources can be from FileProvider or MediaStore. Read permissions are granted via FLAG_GRANT_READ_URI_PERMISSION by the sender; your app should use the granted permissions and propagate them if forwarding.
  • 元素解析:

    • action:
      • android.intent.action.SEND: for a single shared item (text or one image).
      • android.intent.action.SEND_MULTIPLE: for multiple images.
    • category:
      • android.intent.category.DEFAULT: required for implicit intent resolution from other apps and the system share sheet.
    • data (MIME types):
      • text/plain: enables pure text shares (EXTRA_TEXT, EXTRA_SUBJECT).
      • image/*: enables image shares (EXTRA_STREAM), both for single and multiple images.
      • No scheme/host/path restrictions are set to remain compatible with common content:// URIs from FileProvider and MediaStore.
  • 使用方式:

    • Place the intent filters inside your Activity definition that implements the editor UI. Example steps:
      1. In AndroidManifest.xml, add the above intent-filters inside the target .
      2. On Android 12+ (API 31+), set android:exported="true" on that activity because it has intent filters.
      3. At runtime:
        • For single share:
          • Check intent.getAction() == Intent.ACTION_SEND.
          • Read intent.getType() to branch (text/plain vs image/*).
          • For text: getStringExtra(Intent.EXTRA_TEXT) and getStringExtra(Intent.EXTRA_SUBJECT).
          • For image: getParcelableExtra(Intent.EXTRA_STREAM, Uri.class) or read from intent.getClipData().
        • For multiple images:
          • Check intent.getAction() == Intent.ACTION_SEND_MULTIPLE and type image/*.
          • Read getParcelableArrayListExtra(Intent.EXTRA_STREAM) or ClipData URIs.
        • Use ContentResolver.openInputStream(uri) to read images. No additional storage permissions are required when a read grant is present.
      4. If you forward the received URIs to another component or share them out, add FLAG_GRANT_READ_URI_PERMISSION on the outgoing intent and set ClipData to propagate read access.
  • 注意事项:

    • Do not add android.intent.category.BROWSABLE or overly broad MIME types like "/"; they would overexpose the activity and cause unintended matches.
    • Some senders attach URIs via ClipData (especially multiple items). Always check both EXTRA_STREAM and getClipData().
    • If both text and images are present, prioritize images and prefill the text; if no data is present, prompt the user to pick images (app logic).
    • Old apps using file:// URIs are not supported since Android 7.0 for cross-app sharing; most modern shares use content:// via FileProvider/MediaStore.
    • Avoid setting a high intent-filter priority; let the system share sheet rank targets.

技术要点

  • 匹配优先级说明:

    • Two filters are provided: one for ACTION_SEND (text/plain + image/) and one for ACTION_SEND_MULTIPLE (image/).
    • Default priority (no android:priority) is used to avoid conflicts and keep fair ranking in the system chooser.
    • Resolution requires both action and MIME type to match; category DEFAULT is mandatory for implicit resolution.
  • 系统版本兼容性:

    • Android 12+ (API 31+): you must set android:exported="true" on the activity with intent-filters.
    • Android 10+ often uses ClipData for multiple items; handle ClipData in addition to EXTRA_STREAM.
    • Storage/runtime permissions are not required to read content URIs if the sender granted FLAG_GRANT_READ_URI_PERMISSION (standard for shares).
  • 安全配置建议:

    • Keep MIME types restricted to text/plain and image/* as required; do not include "/".
    • Validate incoming URIs (scheme should typically be content://). Handle errors gracefully when streams cannot be opened.
    • Never trust incoming text; sanitize before rendering in the editor to avoid injection into HTML or logs.
    • When re-sharing or passing URIs outside your app, explicitly add FLAG_GRANT_READ_URI_PERMISSION and only include the minimum necessary URIs.

意图过滤器配置

<intent-filter>
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />

    <data
        android:scheme="paydemo"
        android:host="pay"
        android:path="/result" />
</intent-filter>

配置说明

  • 기능 설명:

    • 브라우저 또는 결제 SDK가 paydemo://pay/result 형태의 커스텀 스킴 딥링크로 앱을 호출하여 결제 결과 화면을 표시합니다.
    • 쿼리 파라미터: status ∈ {success, fail, cancel}, orderId, sign.
    • 액티비티 진입 후 서명 검증과 호출 출처 검증을 수행하고, 검증 성공 시 주문 상세로 라우팅 및 결과 리포팅, 파라미터 누락/검증 실패 시 홈으로 안전하게 복귀합니다.
  • 요소 해설:

    • action=android.intent.action.VIEW
      • URI 기반의 딥링크를 처리하기 위한 표준 액션입니다.
    • category=android.intent.category.BROWSABLE
      • 브라우저와 같은 외부 앱에서 안전하게 열릴 수 있도록 허용합니다. 브라우저/결제 SDK 호출 시 필수입니다.
    • category=android.intent.category.DEFAULT
      • startActivity(implicit)로 호출되는 일반적인 경우를 지원합니다. 일부 SDK는 DEFAULT를 요구합니다.
    • data 요소
      • android:scheme="paydemo": 커스텀 스킴을 paydemo로 한정합니다.
      • android:host="pay": 호스트를 pay로 고정하여 의도치 않은 URI 매칭을 차단합니다.
      • android:path="/result": 정확히 /result 경로만 매칭합니다. pathPrefix/Pattern을 사용하지 않아 범위를 불필요하게 넓히지 않습니다.
      • 참고: 쿼리 파라미터(status, orderId, sign)는 인텐트 필터에서 매칭되지 않으며, 런타임에서 Uri.getQueryParameter(...)로 검증해야 합니다.
  • 사용 방식:

    • AndroidManifest.xml 내 대상 Activity 선언에 위의 를 포함시키십시오.
    • Android 12(API 31)+를 타깃팅하는 경우 exported 속성을 명시해야 합니다.
    • 예시:
      <activity
          android:name=".ui.payment.PayResultActivity"
          android:exported="true"
          android:launchMode="singleTop">
          <!-- 결제 결과 콜백 딥링크 -->
          <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.BROWSABLE" />
              <category android:name="android.intent.category.DEFAULT" />
              <data
                  android:scheme="paydemo"
                  android:host="pay"
                  android:path="/result" />
          </intent-filter>
      </activity>
      
    • 호출 예(브라우저/SDK):
    • 런타임 처리 권장 흐름:
      1. Uri 파싱 후 status, orderId, sign 존재 여부 확인
      2. status 값이 {success, fail, cancel} 집합 내에 있는지 검사
      3. 서버 또는 사전 교환한 키로 sign 검증(HMAC/RS256 등)
      4. 출처 검증(가능 시 referrer 확인, SDK의 패키지 화이트리스트/토큰 등 추가 검증)
      5. 성공 시 주문 상세로 라우팅 및 결과 리포팅, 실패/누락 시 홈으로 안전 복귀
  • 주의 사항:

    • 보안:
      • 쿼리 파라미터는 신뢰하지 말고 반드시 검증하십시오. sign은 재사용 방지(타임스탬프/논스)와 유효기간 검증을 권장합니다.
      • 호출 출처는 완전히 신뢰할 수 없으므로, sign 검증을 통과한 경우에만 민감 동작(주문 확정/리포팅 등)을 수행하십시오.
    • 충돌 방지:
      • http/https와 같은 범용 스킴을 필터에 추가하지 마십시오. 브라우저/다른 앱과 충돌합니다.
      • 동일 스킴을 사용하는 다른 Activity가 있다면 host/path로 명확히 분리해 충돌을 피하십시오.
    • 동작:
      • 브라우저에서 열릴 때는 새 태스크에서 실행될 가능성이 있습니다. 딥링크 진입 경로에서 적절한 초기화/복귀 처리를 고려하십시오.

技术要点

  • 매칭 우선순위 설명:
    • priority 속성을 지정하지 않았습니다(권장). 시스템은 명시도(scheme+host+path)의 정확도에 따라 우선순위를 판단합니다.
    • 본 필터는 scheme/host/path를 모두 고정하므로, 같은 스킴 내에서도 의도치 않은 액티비티로 라우팅될 가능성을 낮춥니다.
  • 시스템 버전 호환성:
    • Android 12(API 31)+: Activity에 android:exported 속성 필수. 본 예시는 exported="true"로 외부 호출을 허용합니다.
    • 커스텀 스킴(paydemo)은 App Links(autoVerify) 대상이 아니므로 autoVerify 설정은 불필요합니다.
    • 쿼리 파라미터 매칭은 매니페스트 차원에서 지원되지 않으므로, 모든 API 레벨에서 런타임 검증이 필요합니다.
  • 보안 구성 제안:
    • 매니페스트에서는 매칭 범위를 최소화(scheme/host/path 정확 매칭)하고, 런타임에서는 다음을 수행:
      • 필수 파라미터 존재/형식 검증, status 화이트리스트 검증
      • sign 검증(HMAC-SHA256/RS256 등) + 타임스탬프/논스 재생 공격 방지
      • 가능 시 referrer(브라우저/SDK 제공) 검사 및 내부 화이트리스트와 대조
    • 실패 시 항상 안전한 기본 경로(홈)로 폴백하고, 오류 사유를 로깅하되 민감 정보는 남기지 마십시오.

示例详情

解决的问题

将“活动要做什么”转化为“可直接上线的意图过滤器配置与说明书”。用户只需提供页面/功能用途,即可自动生成符合规范的配置与逐条解读,覆盖深度链接、外部唤起、跨应用分享与通知跳转等核心场景;内置安全与兼容检查,帮助团队快速通过联调与审核,显著降低配置错误、跳转失败与流量损耗,促进业务转化。

适用用户

Android应用开发工程师

输入活动用途即可获得可用配置,覆盖深度链接、分享、通知跳转等常见需求。快速接入跨应用调用,减少清单改动反复,降低缺陷与回退风险。

移动架构师与技术负责人

用它沉淀路由模板与命名规范,统一团队产出。提前发现冲突与风险项,给出更稳健的替代方案,制定多版本与多机型的兼容策略。

QA测试工程师

依据生成的调用示例和检查清单,设计全路径测试用例。快速复现误唤起与匹配异常,精确定位问题活动与配置来源,提升回归效率。

特征总结

一键生成符合规范的意图过滤器,快速打通深度链接与外部唤起路径
自动识别活动用途与路由需求,输出可直接粘贴的清单配置片段与版本兼容建议
智能挑选常用动作与类别组合,避免误匹配与重复唤起造成的问题
支持电商、社交、内容分发等场景,一次配置覆盖分享、搜索、通知跳转
自动校验关键字段与匹配规则,给出冲突提示与更安全的配置建议与替代方案
生成可测试的调用示例与检查清单,帮助你快速通过联调与应用商店审核
自定义参数与匹配范围,灵活适配多品牌机型与不同系统版本行为差异
内置最佳实践与踩坑指南,减少试错成本,缩短从需求到上线的整体周期
支持团队协作与标准化输出,让开发、测试、产品共享同一配置语义
提供场景化模板库与示例集合,新需求只需替换结构化输入即可生成

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 730 tokens
- 2 个可调节参数
{ 活动功能描述 } { 输出语言 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59