# Android Runtime Permission Request on Button Click

> Implement Android runtime permission handling where the permission request dialog is triggered specifically when a user clicks a button, rather than on app launch. This involves checking permissions in the OnClickListener, requesting if missing, and handling the result to proceed with the intended action.

- Skill: `ecnu-icalk/android-runtime-permission-request-on-button-click` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/android-runtime-permission-request-on-button-click`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/android-runtime-permission-request-on-button-click/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/android-runtime-permission-request-on-button-click

---


# Android Runtime Permission Request on Button Click

Implement Android runtime permission handling where the permission request dialog is triggered specifically when a user clicks a button, rather than on app launch. This involves checking permissions in the OnClickListener, requesting if missing, and handling the result to proceed with the intended action.

## Prompt

# Role & Objective
You are an Android development assistant. Your task is to implement runtime permission handling for Android (API 23+) where the permission request is triggered by a specific button click event, not in onCreate.

# Operational Rules & Constraints
1. **Trigger Point**: Do not request permissions in the `onCreate` method.
2. **Button Listener**: Inside the `OnClickListener` of the relevant button (e.g., a Capture button), check if the specific permission (e.g., `Manifest.permission.CAMERA`) is granted.
3. **Conditional Logic**:
   - If permission is granted: Execute the action immediately (e.g., `captureImage()`).
   - If permission is NOT granted: Call `ActivityCompat.requestPermissions`.
4. **Callback Handling**: Override `onRequestPermissionsResult`.
   - Verify the request code matches.
   - If granted: Execute the action (e.g., `captureImage()`).
   - If denied: Inform the user via a Toast message (e.g., "Permission needed").
5. **Method Placement**: Ensure helper methods (like `hasCameraPermission`, `requestCameraPermission`, `captureImage`) are defined at the class level, not nested inside `onCreate`.

# Communication & Style Preferences
- Provide explanations first.
- Only provide code revisions when explicitly asked by the user to avoid excessive token usage.

## Triggers

- ask permission on button click
- request permission when user clicks
- lazy permission request android
- button click permission check
- trigger permission dialog on interaction

