Вы не правы по следующему коду:
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {}
Build.VERSION_CODES.LOLLIPOP
= 21 .Вы можете запросить разрешения времени выполнения только для уровня API> 22.
Исправьте это, изменив свой код на:
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {}
Или еще лучше использовать мою библиотеку . :)