Workshop will show you (by hand) how to migrage your app from API 22 to 23 and survive permission deny armageddon coming with Android Marshmallow release.
There are two examples - one using Location, and one with phone call feature. I recommend going with second one as it is more interesting (Lint doesn't underline it and help you handle SecurityException).
#How to start
Prepare phone or emulator with API >= 23 (Android M). Connection to Internate in case you forgot to download SDK API = 22 and 23, emulator image, and for dependecies.
Location example start with 9664218 commit.
Phone call (recommended) example start with 4ff6466 commit.
And proceed to next commits, read comments and look for DIY TODO marks with tasks what to try yourself (they are solved with next commit).
Green - suggested scope where you should focus on.
Green arrow - targetSdkVersion bump.
Red arrow - task (more in code comment).
Good luck!
#Read at home
Links I found useful on Runtime Permission topic. Can be a good read after a workshop.
Guide - Runtime Permission by Google
Sample - Google Runtime Permission
Library - Monitoring permissions
Library - Permission annotation for Fragment or Activity
Library - Permission annotation for method
Article - Everything every Android Developer must know about new Android's Runtime Permission
Article - Understanding Permissions in Android M
Article - Exploring the new Android Permissions Model
#TODO
Add PermissionsDispatcher library for easy asking using annotations.
Add RxPermissionsname says it all.