android-permissions-activity-results について
Android 開発者向けに、権限と Activity Result フローの設計を支援するスキルです。機能に応じた Picker、ライフサイクルに沿う Contract、拒否や限定アクセスからの復帰を重視し、API レベルごとの差異も扱います。
主な機能
- 01Activity Result Contract の選択
- 02権限状態のモデル化
- 03Picker を優先する機能フロー
- 04Android API レベル別の動作確認
- 05設定から戻った後の再確認
- 06拒否・限定アクセスからの復帰
活用シーン
- 01カメラ権限フローの設計
- 02写真やドキュメント選択の処理
- 03通知権限の動作レビュー
- 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.yamlreferences/official-links.mdpatterns.mdscenarios.mdscripts/run_examples.sh詳細
Android Permissions Activity Results
使用する場面
- リクエストが次の内容に関する場合に、このスキルを使用します:Android の権限リクエストフロー、Android の Activity Result API、Android アプリのカメラ権限。
- 主な目的:Android のフローで、最新の権限リクエスト、Activity Result API、機能に応じた UX を使用します。
- ピッカーと権限の対応表や API レベルごとの動作チェックリストが必要な場合は、
references/patterns.mdを読みます。 - フォトピッカー、通知権限、メディアへの限定アクセスの例については、
references/scenarios.mdを読みます。 - 対象範囲が広がる場合は、次のスキルに引き継ぎます:
android-media-files-sharingandroid-testing-ui
ワークフロー
- 権限名ではなく、ユーザーが必要とする機能から始めます。フォトピッカー、ドキュメントピッカー、カメラ撮影、通知のオプトインを使えば、より広範な実行時権限が不要になることがよくあります。
- 適切な Activity Result コントラクトを選び、アクティビティ、フラグメント、記憶された Compose ランチャーなど、ライフサイクルが安定した所有者にランチャーを保持します。
- 権限の状態をすべて明示的にモデル化します:許可、拒否、恒久的な拒否、限定的/選択されたアクセス、一時的なアクセス、設定画面からの復帰。
- Android 13 以降の
POST_NOTIFICATIONS、おおよその位置情報と正確な位置情報の違い、別フローとしてのバックグラウンド位置情報、Android 14 の選択した写真へのアクセスなど、API レベルによる違いを考慮します。 - 設定画面やピッカーフローから戻ったら、機能へのアクセスを再確認します。その後、成功するケースを前提とせず、画面回転、プロセス終了、拒否からの復帰を検証します。
ガードレール
- 読み込み中、空、エラー、オフライン、権限拒否の状態を、第一級の UI 状態として扱います。
- ユーザー操作または明示的な副作用なしに、コンポジションから権限やピッカーのコントラクトを直接起動しないでください。
- 広範なストレージ権限よりも、フォトピッカーや SAF など、利用可能な範囲が最も狭い機能を優先します。
- 権限からの復帰をテスト可能にします:理由の説明、設定画面へのリダイレクト、拒否状態、復帰後の再検証を含めます。
アンチパターン
- プロダクトのフローで成功するケースだけで十分だと考えること。
- 拒否された後に何度も再リクエストし、設定画面への誘導や代替手段を明確に提示しないこと。
- フォトピッカーやドキュメントコントラクトで十分なのに、メディアやストレージへのアクセスをリクエストすること。
- 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
- https://developer.android.com/training/permissions/requesting
- https://developer.android.com/training/basics/intents/result
- https://developer.android.com/training/data-storage/shared/photopicker
- https://developer.android.com/about/versions/14/changes/partial-photo-video-access
- https://developer.android.com/develop/ui/views/notifications/notification-permission
- https://developer.android.com/privacy-and-security/minimize-permission-requests
コメント
Markdown 対応