One of the main changes in this version has to do with the permissions for apps. Before Android M, we were used to accepting the permissions of an app when we were about to download it; the play store showed us a list of permissions that an app has, and we needed to accept them in order to download and install it.
This has changed with the introduction of runtime permissions. The idea here is to accept the permission only when you need it. For instance, WhatsApp might not need access to your microphone until your make a call or leave a voice message.
This is something we need to take into account when we develop an app; it is a change for the developer who now needs to control what is to be done if the user doesn’t accept the permission. Previously, we didn’t have to do any controlling because it was an all-or-none choice at installation time; now, we have to consider the decision of the user at runtime.