项目作者: russo-programmisto

项目描述 :
Easy permissions for Android
高级语言: Java
项目地址: git://github.com/russo-programmisto/Convenience.git
创建时间: 2018-08-03T20:26:26Z
项目社区:https://github.com/russo-programmisto/Convenience

开源协议:Apache License 2.0

下载



Convenience











At a Glance

Convenience is a set of tools for making permissions management in Android significantly easier.

How to Get Started

Add jitpack.io repository to your project:

  1. allprojects {
  2. repositories {
  3. jcenter()
  4. maven { url "https://jitpack.io" }
  5. }
  6. }

Then add Convenience to dependencies list:

  1. dependencies {
  2. implementation 'com.github.igormatyushkin014:Convenience:2.0.1'
  3. }

Requirements

  • Android SDK 23 and later
  • Android Studio 3.0 and later
  • Java 7 and later

Usage

Permission Manager

All operations with permissions are done with PermissionManager instance which is available via:

  1. PermissionManager permissionManager = Convenience.getPermissions();

Preparing Activity

Before using Convenience for permission request, you have to override activity’s onRequestPermissionsResult method:

  1. @Override
  2. public void onRequestPermissionsResult(
  3. int requestCode,
  4. @NonNull String[] permissions,
  5. @NonNull int[] grantResults
  6. ) {
  7. boolean handledByConvenience = Convenience.getPermissions().onRequestPermissionsResult(
  8. requestCode,
  9. permissions,
  10. grantResults
  11. );
  12. if (!handledByConvenience) {
  13. super.onRequestPermissionsResult(
  14. requestCode,
  15. permissions,
  16. grantResults
  17. );
  18. }
  19. }

Check Permissions

  1. String[] permissions = new String[] {
  2. Manifest.permission.CAMERA,
  3. Manifest.permission.WRITE_EXTERNAL_STORAGE
  4. };
  5. Convenience.getPermissions().check(
  6. permissions,
  7. activity,
  8. new PermissionManager.OnRequestListener() {
  9. @Override
  10. public void onResult(CheckResult checkResult) {
  11. if (requestResult.hasBlockedPermissions()) {
  12. // Handle blocked permissions
  13. } else {
  14. // All permissions available
  15. }
  16. }
  17. }
  18. );

CheckResult instance includes both allowed and blocked permissions:

  1. String[] allowedPermissions = checkResult.getAllowedPermissions();
  2. String[] blockedPermissions = checkResult.getBlockedPermissions();

Request Permissions

Ask user to accept permissions:

  1. Convenience.getPermissions().request(
  2. permissions,
  3. activity,
  4. new PermissionManager.OnRequestListener() {
  5. @Override
  6. public void onResult(RequestResult requestResult) {
  7. if (requestResult.hasBlockedPermissions()) {
  8. // Handle blocked permissions
  9. } else {
  10. // All permissions available
  11. }
  12. }
  13. }
  14. );

Also, you can request only those permissions from the list that are currently blocked. It means that, if the permissions list includes accepted permissions, they will not be requested again. User will be asked to accept other permissions that were not accepted before:

  1. Convenience.getPermissions().requestIfNeeded(
  2. permissions,
  3. activity,
  4. new PermissionManager.OnRequestListener() {
  5. @Override
  6. public void onResult(RequestResult requestResult) {
  7. if (requestResult.hasBlockedPermissions()) {
  8. // Handle blocked permissions
  9. } else {
  10. // All permissions available
  11. }
  12. }
  13. }
  14. );

RequestResult instance includes both allowed and blocked permissions:

  1. String[] allowedPermissions = requestResult.getAllowedPermissions();
  2. String[] blockedPermissions = requestResult.getBlockedPermissions();

License

Convenience is available under the Apache 2.0 license. See the LICENSE file for more info.