mcpField
A
android-permissions-activity-results

android-permissions-activity-results

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

关于 android-permissions-activity-results

面向 Android 开发者的权限与 Activity Result 流程指南,优先考虑按能力选择的 Picker、符合生命周期的 Contract,以及拒绝和有限访问的恢复处理,并关注 API 级别差异。

主要功能

  1. 01选择 Activity Result Contract
  2. 02建模权限状态
  3. 03优先使用 Picker 的能力流程
  4. 04检查 Android API 级别行为
  5. 05从设置返回后重新验证
  6. 06处理拒绝与有限访问的恢复

适用场景

  1. 01设计相机权限流程
  2. 02处理照片与文档选择
  3. 03审查通知权限行为
  4. 04检查设置返回后的权限恢复

安装

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

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-permissions-activity-results

安装后在 Claude Code 中输入/android-permissions-activity-results确认已加载。

包含的文件

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

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

详细介绍

Android 权限活动结果

适用场景

  • 当请求涉及以下内容时使用此技能:Android 权限请求流程、Android Activity Result API、Android 应用中的相机权限。
  • 主要目标:在 Android 流程中使用现代权限请求、Activity Result API 和按功能能力控制的 UX。
  • 需要查看选择器与权限对照表或 API 级别行为检查清单时,请阅读 references/patterns.md。
  • 查看照片选择器、通知权限和有限媒体访问示例时,请阅读 references/scenarios.md。
  • 范围扩展时转交给以下技能:
  • android-media-files-sharing
  • android-testing-ui

工作流

  1. 从用户所需的功能能力入手,而不是权限名称:照片选择器、文档选择器、相机拍摄或通知授权通常可以避免申请范围更广的运行时权限。
  2. 选择合适的 Activity Result 契约,并将启动器放在生命周期稳定的所有者中,例如 activity、fragment 或记忆化的 Compose 启动器。
  3. 明确建模完整的权限状态:已授予、已拒绝、永久拒绝、有限/已选内容访问、单次访问,以及通过设置恢复访问。
  4. 考虑 API 级别差异,例如 Android 13+ 中的 POST_NOTIFICATIONS、大致位置与精确位置的区别、作为独立流程的后台位置,以及 Android 14 的已选照片访问。
  5. 从设置或选择器流程返回后重新检查功能能力,并验证屏幕旋转、进程死亡和拒绝后的恢复流程,不要假设一切都会顺利完成。

防护措施

  • 将加载、空状态、错误、离线和权限被拒状态视为一等 UI 状态。
  • 不要在没有用户操作或明确副作用的情况下,直接从组合中启动权限或选择器契约。
  • 优先使用范围最窄的功能能力入口,例如 Photo Picker 或 SAF,而不是范围广泛的存储权限。
  • 确保权限恢复流程可测试:理由说明、跳转设置、拒绝状态以及返回后的重新验证。

反模式

  • 认为产品流程只需处理顺利完成的情况。
  • 在用户拒绝后反复请求权限,而不是提供明确的设置恢复或替代路径。
  • Photo Picker 或文档契约已足够时,仍请求媒体或存储访问权限。
  • 将 Android 14 的已选照片访问视为对完整媒体库的访问。

审查重点

  • 此功能能否使用选择器或契约,而不是运行时权限?
  • 流程能否正确处理拒绝、有限访问和从设置返回?
  • 权限启动是否由正确的生命周期作用域管理,并在恰当时机发起?
  • 是否针对相关情况说明了 Android 13+ 和 Android 14+ 的平台特定行为?

示例

顺利完成
  • 场景:在提出流程变更前,先查找仓库中 Activity Result 和权限相关的位置。
  • 命令:rg -n "rememberLauncherForActivityResult|RequestPermission|RequestMultiplePermissions|PickVisualMedia|OpenDocument|TakePicture" examples
边缘情况
  • 场景:检查通知和媒体访问路径是否考虑了 API 级别特定行为。
  • 命令:rg -n "POST_NOTIFICATIONS|READ_MEDIA_|READ_EXTERNAL_STORAGE|PickVisualMedia" examples
失败恢复
  • 场景:区分权限提示与媒体共享及测试请求。
  • 命令:python3 scripts/eval_triggers.py --skill android-permissions-activity-results

完成检查清单

  • 在可行的情况下,所选契约或选择器的范围比广泛权限更窄。
  • 已对拒绝、永久拒绝、有限访问以及从设置返回后的状态进行建模。
  • 已说明受影响 Android 版本之间的 API 级别差异。
  • 恢复 UI 和可观测性均已明确说明,而非仅作暗示。

Official References

评论

支持 Markdown