# getactivity/xxpermissions

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/getactivity-xxpermissions).**

6,748 stars · 896 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/getActivity/XXPermissions
- awesome-repositories: https://awesome-repositories.com/repository/getactivity-xxpermissions.md

## Topics

`andpermission` `android` `androidpermissions` `easypermission` `permission` `permission-android` `permissions` `permissionsdispatcher` `permissionutils` `permissionx` `rxpermission` `rxpermissions`

## Description

XXPermissions is a framework and manager for handling runtime and special system permissions across different Android operating system versions. It provides a unified interface for requesting standard permissions and directing users to system settings pages for advanced access control, such as file access and accessibility services.

The project features a backward compatibility layer that abstracts version-specific logic, removing the need for manual operating system version checks in client code. It utilizes a chainable request pipeline to queue multiple permissions and manage their asynchronous resolution.

Developer tooling includes an assertion engine that triggers exceptions during debug mode to identify incorrect permission implementation patterns. The framework also integrates version-aware mapping to ensure requests remain compatible across various API levels.

## Tags

### Security & Cryptography

- [Android Permission Management](https://awesome-repositories.com/f/security-cryptography/android-permission-management.md) — Handles runtime and system permission requests across different Android versions with a single unified interface.
- [Runtime Permission Management](https://awesome-repositories.com/f/security-cryptography/runtime-permission-management.md) — Implements a chainable interface for requesting standard system permissions and handling user responses.
- [Special System Permission Handling](https://awesome-repositories.com/f/security-cryptography/accessibility-permissions/special-system-permission-handling.md) — Requests advanced system permissions for file access and accessibility services by managing transitions to system settings. ([source](https://github.com/getactivity/xxpermissions#readme))
- [API Level Mapping](https://awesome-repositories.com/f/security-cryptography/permission-mapping-systems/api-level-mapping.md) — Maps requested permissions to specific Android API levels to ensure compatible requests across different operating system versions.

### Development Tools & Productivity

- [Backward Compatibility Libraries](https://awesome-repositories.com/f/development-tools-productivity/backward-compatibility-libraries.md) — Automatically adapts new permission requests to older operating system versions to eliminate manual version checks. ([source](https://github.com/getactivity/xxpermissions#readme))
- [Settings Redirection](https://awesome-repositories.com/f/development-tools-productivity/application-settings/settings-redirection.md) — Directs users to the system application settings page when direct runtime requests are not possible.

### Operating Systems & Systems Programming

- [Version Compatibility Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/multi-architecture-support/version-compatibility-layers.md) — Abstracts version-specific permission logic to eliminate manual OS version checks in code.

### Software Engineering & Architecture

- [Compatibility Layers](https://awesome-repositories.com/f/software-engineering-architecture/compatibility-layers.md) — Provides a compatibility layer that abstracts version-specific logic to remove manual OS version checks in client code.

### Mobile Development

- [Chainable Request Pipelines](https://awesome-repositories.com/f/mobile-development/permission-request-queues/chainable-request-pipelines.md) — Implements a chainable request pipeline to queue multiple permissions and manage their asynchronous resolution.
- [System Settings Navigators](https://awesome-repositories.com/f/mobile-development/system-settings-navigators.md) — Guides users to the correct system settings pages to grant special permissions like file access and accessibility.
