Android 6.0 introduces a new permissions model that gives more control to users. It's a completely new spin on application permissions and there are some caveats to watch out for. Even if you don't want to update your app to API level 23, there is a potential danger that your app will crash or misbehave on device running Marshmallow.
By adapting a large codebase to runtime permissions model we gained some experience which I would like to share. First of all we will compare it with original model to understand what has changed. Then we will dig into the core of the new model implementation to see how it actually works. We'll check new APIs and I'll show the good, the bad and the ugly it did to our code. Last but not least we'll talk about changes needed in tests and difficulties we had with automation.