Android

Notes and resources for MPD android maintainers.

Android studio

Version control

git ignoring .idea directory completely until a good reason emerges not to

Native libraries

Permissions

Files access

The required permission depends on android SDK version:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
    Manifest.permission.READ_MEDIA_AUDIO
else
    Manifest.permission.READ_EXTERNAL_STORAGE

Permission request

Request runtime permissions

Since Android 6.0 (API level 23):

Android will ignore permission request and will not show the request dialog if the user's action implies "don't ask again." This leaves the app in a crippled state and the user confused. Google says "don't try to convince the user", so it returns false for shouldShowRequestPermissionRationale.

To help the user proceed, we show the Request permission button only if shouldShowRequestPermissionRationale == true because there's a good chance the permission request dialog will not be ignored.

If shouldShowRequestPermissionRationale == false we instead show the "rationale" message and a button to open the app info dialog where the user can explicitly grand the permission.