mcpField
A
android-media-files-sharing

android-media-files-sharing

github.com/krutikjain开发1457 次安装31 周前更新
代码仓库

关于 android-media-files-sharing

android-media-files-sharing 是面向 Android 开发者的文件与媒体选择、分享技能,指导选择 Photo Picker、SAF、FileProvider 和 chooser API,并强调最小权限与 URI 授权管理。

主要功能

  1. 01Photo Picker 与 SAF 选择指引
  2. 02FileProvider 和 chooser 分享
  3. 03Content URI 与临时授权管理
  4. 04MIME 类型和 authority 检查
  5. 05回退流程与接收方兼容性审查

适用场景

  1. 01为 Android 应用添加媒体选择
  2. 02向其他应用分享应用自有文件
  3. 03检查 URI 授权和回退行为

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-media-files-sharing

安装后在 Claude Code 中输入/android-media-files-sharing确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

详细介绍

Android 媒体文件共享

适用场景

  • 当请求涉及以下内容时使用此技能:Android 文件共享、Android 应用中的照片选择器、Android FileProvider 设置。
  • 主要目标:使用现代 Android 文件、媒体、选择器、FileProvider 和分享面板 API,并尽量减少权限。
  • 当核心问题涉及内容 URI、分享面板流程、选择器选择或应用间文件交换时,使用此技能。只有当难点在于运行时权限流程本身时,才使用 android-permissions-activity-results。
  • 当范围扩大时,移交给以下技能:
  • android-permissions-activity-results
  • android-security-best-practices

工作流

  1. 从资源移动路径入手:选择现有媒体、打开文档、创建/导出文件、拍摄新内容,或将应用拥有的内容分享给其他应用。
  2. 优先选择范围最窄的平台接口:Photo Picker、SAF contracts、FileProvider 或基于 chooser 的分享,再考虑广泛的存储权限。
  3. 使用应用私有存储、MIME 类型、临时授权和稳定的 authority,明确文件所有权和 URI 授权。
  4. 验证返回流程、功能缺失时的回退方案,以及接收应用之间的互操作性,而不只是测试正常流程。
  5. 只有在 URI 和分享约定正确后,才移交运行时权限相关的复杂工作或更深入的安全加固工作。

注意事项

  • 尽可能优先使用 Photo Picker、SAF 和 chooser API,而非广泛的媒体或存储权限。
  • 使用 content:// URI 和临时授权分享内容,绝不使用原始文件路径。
  • 明确设置导出的 authorities、MIME 类型和缓存清理方式。
  • 将应用外的接收方视为不可信对象;验证离开应用和返回应用的内容。

反模式

  • Photo Picker 或 SAF 已足够时,仍请求广泛的媒体或存储访问权限。
  • 使用 file:// 路径或全局可读文件分享内容,而不是使用 FileProvider URI。
  • 假设每个接收应用都能正确处理每种 MIME 类型或 URI 权限。
  • 将权限流程设计与文件分享约定设计混在一起,导致两者都不清晰。

审查重点

  • Picker/SAF/FileProvider/chooser 的选择。
  • MIME 类型、URI authority 和授权生命周期的正确性。
  • 以最少权限访问媒体。
  • 接收应用之间的互操作性,以及临时文件的清理。

示例

正常流程
  • 场景:使用权限最少的 API 附加并分享任务快照。
  • 命令:cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
边缘情况
  • 场景:在 XML fixture 中处理选择器支持缺失或媒体功能被拒绝的情况。
  • 命令:cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
故障恢复
  • 场景:将媒体/文件流程与仅涉及权限或仅涉及网络的请求分开处理。
  • 命令:python3 scripts/eval_triggers.py --skill android-media-files-sharing

完成检查清单

  • 在可行的情况下,所用的平台接口比广泛的存储权限范围更窄。
  • 明确设置 URI authorities、MIME 类型和临时授权。
  • 已覆盖选择器和分享面板的回退方案。
  • 仅涉及权限的工作已移交处理,未与分享约定混为一谈。

官方参考资料

评论

支持 Markdown