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. 01Androidアプリへのメディア選択機能の追加
  2. 02アプリ所有ファイルの他アプリとの共有
  3. 03URI許可とフォールバック動作の確認

インストール

コマンドをコピーしてターミナルで実行します。

$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 コントラクト、FileProvider、または chooser ベースの共有など、最も対象を絞ったプラットフォーム機能を優先します。
  3. アプリ専用ストレージ、MIME タイプ、一時的な権限付与、安定した authority を使い、ファイルの所有権と URI の権限付与を明確にします。
  4. 正常系だけでなく、復帰フロー、機能が利用できない場合のフォールバック、受信側アプリとの相互運用性も検証します。
  5. URI と共有のコントラクトが正しいことを確認してから、ランタイム権限の複雑な処理や、より高度なセキュリティ強化を引き継ぎます。

ガードレール

  • 可能な場合は、広範なメディア権限やストレージ権限よりも Photo Picker、SAF、chooser API を優先します。
  • コンテンツの共有には content:// URI と一時的な権限付与を使用し、生のファイルパスは使用しません。
  • エクスポートされる authority、MIME タイプ、キャッシュのクリーンアップを明確にします。
  • アプリ外の受信側は信頼できないものとして扱います。アプリから出ていくデータと、アプリに戻ってくるデータを検証します。

アンチパターン

  • Photo Picker または SAF で十分な場面で、広範なメディアアクセス権限やストレージアクセス権限を要求する。
  • FileProvider の URI ではなく、file:// パスや誰でも読み取り可能なファイルを共有する。
  • すべての受信側アプリが、あらゆる MIME タイプや URI 権限を正しく扱うと想定する。
  • 権限フローの設計とファイル共有コントラクトの設計を混在させ、両方を不明瞭にする。

レビューの重点項目

  • ピッカー/SAF/FileProvider/chooser の選択。
  • MIME タイプ、URI authority、権限付与のライフサイクルの正確性。
  • 権限を最小限に抑えたメディアアクセス。
  • 受信側アプリとの相互運用性と一時ファイルのクリーンアップ。

例

正常系
  • シナリオ:最小権限の API を使って、タスクのスナップショットを添付して共有する。
  • コマンド:cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest
エッジケース
  • シナリオ:XML フィクスチャで、ピッカーが利用できない場合やメディア機能が拒否された場合に対応する。
  • コマンド:cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest
障害からの復旧
  • シナリオ:メディア/ファイルのフローを、権限のみ、またはネットワークのみのリクエストと切り分ける。
  • コマンド:python3 scripts/eval_triggers.py --skill android-media-files-sharing

完了チェックリスト

  • 可能な場合、プラットフォーム機能の選択範囲を広範なストレージ権限よりも狭くしています。
  • URI authority、MIME タイプ、一時的な権限付与を明示しています。
  • ピッカーと共有シートのフォールバックを網羅しています。
  • 権限のみの作業を共有コントラクトと混同せず、適切なスキルに引き継いでいます。

公式リファレンス

コメント