关于 android-media-files-sharing
android-media-files-sharing 是面向 Android 开发者的文件与媒体选择、分享技能,指导选择 Photo Picker、SAF、FileProvider 和 chooser API,并强调最小权限与 URI 授权管理。
主要功能
- 01Photo Picker 与 SAF 选择指引
- 02FileProvider 和 chooser 分享
- 03Content URI 与临时授权管理
- 04MIME 类型和 authority 检查
- 05回退流程与接收方兼容性审查
适用场景
- 01为 Android 应用添加媒体选择
- 02向其他应用分享应用自有文件
- 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.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh详细介绍
Android 媒体文件共享
适用场景
- 当请求涉及以下内容时使用此技能:Android 文件共享、Android 应用中的照片选择器、Android FileProvider 设置。
- 主要目标:使用现代 Android 文件、媒体、选择器、FileProvider 和分享面板 API,并尽量减少权限。
- 当核心问题涉及内容 URI、分享面板流程、选择器选择或应用间文件交换时,使用此技能。只有当难点在于运行时权限流程本身时,才使用
android-permissions-activity-results。 - 当范围扩大时,移交给以下技能:
android-permissions-activity-resultsandroid-security-best-practices
工作流
- 从资源移动路径入手:选择现有媒体、打开文档、创建/导出文件、拍摄新内容,或将应用拥有的内容分享给其他应用。
- 优先选择范围最窄的平台接口:Photo Picker、SAF contracts、
FileProvider或基于 chooser 的分享,再考虑广泛的存储权限。 - 使用应用私有存储、MIME 类型、临时授权和稳定的 authority,明确文件所有权和 URI 授权。
- 验证返回流程、功能缺失时的回退方案,以及接收应用之间的互操作性,而不只是测试正常流程。
- 只有在 URI 和分享约定正确后,才移交运行时权限相关的复杂工作或更深入的安全加固工作。
注意事项
- 尽可能优先使用 Photo Picker、SAF 和 chooser API,而非广泛的媒体或存储权限。
- 使用
content://URI 和临时授权分享内容,绝不使用原始文件路径。 - 明确设置导出的 authorities、MIME 类型和缓存清理方式。
- 将应用外的接收方视为不可信对象;验证离开应用和返回应用的内容。
反模式
- Photo Picker 或 SAF 已足够时,仍请求广泛的媒体或存储访问权限。
- 使用
file://路径或全局可读文件分享内容,而不是使用FileProviderURI。 - 假设每个接收应用都能正确处理每种 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 类型和临时授权。
- 已覆盖选择器和分享面板的回退方案。
- 仅涉及权限的工作已移交处理,未与分享约定混为一谈。
官方参考资料
- https://developer.android.com/training/data-storage/shared/photopicker
- https://developer.android.com/training/data-storage/shared/documents-files
- https://developer.android.com/training/secure-file-sharing/setup-sharing
- https://developer.android.com/training/sharing/send
- https://developer.android.com/topic/performance/graphics/picker
评论
支持 Markdown