android-media-files-sharing
Use modern Android file, media, picker, FileProvider, and share-sheet APIs with minimal permissions.
Works with
--- name: android-media-files-sharing description: Use modern Android file, media, picker, FileProvider, and share-sheet APIs with minimal permissions. license: MIT --- # Android Media Files Sharing ## When To Use - Use this skill when the request is about: android file sharing, photo picker android app, fileprovider setup android. - Primary outcome: Use modern Android file, media, picker, FileProvider, and share-sheet APIs with minimal permissions. - Reach for this skill when the core problem is content URIs, share-sheet flows, picker choice, or app-to-app file exchange. Use `android-permissions-activity-results` only when the hard part is the runtime permission flow itself. - Handoff skills when the scope expands: - `android-permissions-activity-results` - `android-security-best-practices` ## Workflow 1. Start with the asset movement path: pick existing media, open a document, create/export a file, capture new content, or share app-owned content to another app. 2. Choose the narrowest platform surface first: Photo Picker, SAF contracts, `FileProvider`, or chooser-based sharing before considering broad storage permissions. 3. Keep file ownership and URI grants explicit with app-private storage, MIME types, temporary grants, and stable authorities. 4. Validate return flows, absent-capability fallbacks, and recipient-app interoperability instead of testing only the happy path. 5. Hand off runtime permission complexity or deeper hardening only after the URI and sharing contract is correct. ## Guardrails - Prefer Photo Picker, SAF, and chooser APIs over broad media or storage permissions where possible. - Share content with `content://` URIs and temporary grants, never raw file paths. - Keep exported authorities, MIME types, and cache cleanup explicit. - Treat recipients outside your app as untrusted; validate what leaves the app and what comes back. ## Anti-Patterns - Requesting broad media or storage access when Photo Picker or SAF is enough. - Sharing `file://` paths or world-readable files instead of `FileProvider` URIs. - Assuming every recipient app handles every MIME type or URI permission correctly. - Mixing permission-flow design with file-sharing contract design until both become unclear. ## Review Focus - Picker/SAF/FileProvider/chooser selection. - MIME type, URI authority, and grant lifecycle correctness. - Minimal-permission media access. - Recipient-app interoperability and cleanup of temporary files. ## Examples ### Happy path - Scenario: Attach and share a task snapshot using the least-privilege API. - Command: `cd examples/orbittasks-compose && ./gradlew :app:testDebugUnitTest` ### Edge case - Scenario: Handle absent picker support or denied media capabilities in the XML fixture. - Command: `cd examples/orbittasks-xml && ./gradlew :app:testDebugUnitTest` ### Failure recovery - Scenario: Separate media/file flows from permission-only or networking-only requests. - Command: `python3 scripts/eval_triggers.py --skill android-media-files-sharing` ## Done Checklist - The platform surface is narrower than a broad storage permission where possible. - URI authorities, MIME types, and temporary grants are explicit. - Picker and share-sheet fallbacks are covered. - Permission-only work is handed off instead of conflated with the sharing contract. ## Official References - [https://developer.android.com/training/data-storage/shared/photopicker](https://developer.android.com/training/data-storage/shared/photopicker) - [https://developer.android.com/training/data-storage/shared/documents-files](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/secure-file-sharing/setup-sharing) - [https://developer.android.com/training/sharing/send](https://developer.android.com/training/sharing/send) - [https://developer.android.com/topic/performance/graphics/picker](https://developer.android.com/topic/performance/graphics/picker)
More Mobile skills
animation-vocabulary
emilkowalski/skills
Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.
cross-border-ecommerce
nexscope-ai/ecommerce-skills
Cross-border e-commerce expansion advisor. Scores target markets on 8 weighted dimensions (market size, ecommerce penetration, competition, regulatory complexity, logistics infrastructure, payment ecosystem, cultural distance, IP protection), compares 5 fulfillment models with cost and transit data, provides country-by-country tax/duty compliance guides (EU VAT/IOSS, UK VAT, US sales tax, CA GST, AU GST, JP consumption tax), maps local payment preferences by market, and builds a phased expansion roadmap. No API key required.
developing-genkit-dart
firebase/agent-skills
Generates code and provides documentation for the Genkit Dart SDK. Use when the user asks to build AI agents in Dart, use Genkit flows, or integrate LLMs into Dart/Flutter applications.

