Android Base Best Practices
Do not block the user interface, use asynchronous requests for the output input operations that may involve delay such as network requests or database access.
Request permission to users in an orderly and context-related manner.
Debug and correctly trace the app, it will help you increase the quality and verify the correct operation.
Prepare images for different screen densities (DPIs).
Explicitly state in the manifest what screen sizes our application supports, it is not a good approach when we want it to work on most devices. This option limits publishing only to the listed display devices!.
Check external storage is mounted before you are going to use it.
Check the space before writing and control the exceptions in run-time in writing/reading operations.
Use the minimal permissions y only the necessary for your app.
Remember use the three steps based on checkSelfPermission, shouldShowRequestPermissionRationale and onRequestPermissionsResult. ShouldShowRequestPermissionRationale indicate whether or not we should show UI message with rationale for requesting a permission. Attention shouldShowRequestPermissionRationale only return true when a dangerous permission was denied at the first previous time and the user is trying again to get access to this functionality.