Permissions & Runtime Requests
Declare and request dangerous permissions at runtime using ActivityResultContracts, show rationale dialogs, and handle permanent denial.
Android Permissions Overview
Android apps must declare which device features they need. Permissions protect user privacy:
- Normal permissions — low risk, granted automatically (INTERNET, VIBRATE)
- Dangerous permissions — access sensitive data, must be requested at runtime (CAMERA, LOCATION, READ_CONTACTS)
- Signature permissions — only for apps signed with the same certificate
Declaring in Manifest
All permissions must first be declared in AndroidManifest.xml:
<!-- AndroidManifest.xml -->
<manifest ...>
<!-- Normal: granted automatically -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- Dangerous: must request at runtime -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application ...>
...
</application>
</manifest>All lessons in this course
- Project Structure & Manifest
- Activities & Lifecycle
- Layouts & Views
- Handling User Input
- Intents & Navigation
- Fragments
- Permissions & Runtime Requests