0Pricing
Android Academy · Lesson

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

  1. Project Structure & Manifest
  2. Activities & Lifecycle
  3. Layouts & Views
  4. Handling User Input
  5. Intents & Navigation
  6. Fragments
  7. Permissions & Runtime Requests
← Back to Android Academy