Absurdly minimal API. There're only 3 static methods and one interface with callbacks.
No annotations, no worry about onRequestPermissionsResult, no worry about shouldShowRequestPermissionRationale
Plays nice with ArchitectureComponents, lets your ViewModel implement the interface
The API
PermissionBitte.shouldAsk(FragmentActivity, BitteBitte) // let you know if you need permissionPermissionBitte.ask(FragmentActivity, BitteBitte) // ask for permission and handle all callbacksPermissionBitte.goToSettings(FragmentActivity) // just a helper
The Callback
interfaceBitteBittevoidyesYouCan(); // all permissions acceptedvoidnoYouCant(); // the user marked "Never ask again"voidaskNicer(); // show rationale