A reactive Android runtime permissions library using RxJava2 to simplify permission handling.
RxPermissions is an Android library that provides a reactive way to handle runtime permissions using RxJava2. It simplifies requesting and managing permissions by wrapping the Android permission API into Observable streams, eliminating the need to split logic between request calls and result handlers in `onRequestPermissionsResult`.
Android developers who use RxJava2 in their projects and want a more declarative, composable approach to handling runtime permissions, especially those building apps that require multiple permissions or complex permission flows.
Developers choose RxPermissions because it reduces boilerplate, ensures lifecycle safety, automatically handles backward compatibility with pre-Marshmallow devices, and integrates permission flows seamlessly into reactive pipelines, making code cleaner and less error-prone.
Android runtime permissions powered by RxJava2
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Encapsulates permission requests into RxJava Observables, enabling seamless composition with other reactive operations like filtering and chaining, as demonstrated with RxBinding in the README.
Designed to avoid infinite loops by requiring requests during initialization phases like onCreate, ensuring stability across configuration changes, as highlighted in the 'Important read' section.
Automatically grants permissions on pre-Android M devices, eliminating manual version checks and reducing boilerplate, which is a key benefit mentioned in the README.
Provides methods like requestEach and ensureEach that give detailed feedback including grant status and rationale flags, allowing precise control over individual or combined permissions.
The library is labeled as beta in the README, which implies potential instability, unresolved bugs, or future breaking changes that could affect production use.
Forces adoption of RxJava, adding complexity and app size for projects not already using reactive programming, and may conflict with other Rx versions or async frameworks.
Requires permission requests to be set up during initialization phases like onCreate, which can be restrictive for dynamic or event-driven flows, as noted in the documentation.