Giter VIP home page Giter VIP logo

hey-permission's Introduction

HeyPermission

Download

HeyPermission 是一个基于注解及部分回调的对 Android 动态权限调用进行封装的库。

特性

  • 单个权限/权限组申请
  • 注解回调结果
    • @PermissionsGranted 申请权限均被允许
    • @PermissionsDenied 申请权限被拒绝(下次还可询问用户)
    • @PermissionsNeverAskAgain 申请权限被永久拒绝
    • @PermissionsResult 申请权限结果(允许或拒绝都会回调)
  • 注解回调方法可以是任意参数
    • 如果参数中有 int,则第一个 int 参数将接收此次的 requestCode
    • 如果参数中有 List,则第一个 List 参数将接收此次申请通过(@PermissionsGranted)或被拒绝(其他注解)的 permissions
  • 回调注解支持处理多个 requestCode
    • 仅申请允许的注解只能处理单个 requestCode
    • 其他权限结果注解支持多个 requestCode,如果为空则表示处理所有 requestCode
  • 提示用户权限的重要性(回调方法)
    • 默认的对话框供调用
  • 被永久拒绝后提示用户去系统设置添加权限的对话框
  • 支持以下组件
    • Activity
    • Fragment
    • SupportFragment

使用方法

依赖

    compile 'com.parkingwang:hey-permission:0.1'
    // OR
    implementation 'com.parkingwang:hey-permission:0.1'

Java 代码

请求权限:

    HeyPermission.requestPermissions(this, requestCode, permission);

处理权限回调

    // 权限被永久拒绝后的回调。建议在 BaseActivity 或 BaseFragment 中统一处理。
    @PermissionsNeverAskAgain
    public void onPermissionNeverAskAgain(int requestCode) {
        PermissionDialogs.showDefaultAppSettingsDialog(this, requestCode);
    }

    @PermissionsDenied
    public void onPermissionDenied() {
        Toast.makeText(this, R.string.msg_you_denied_the_permission_request, Toast.LENGTH_SHORT).show();
    }

    // 实现了 RationaleCallback 接口后会回调此方法,返回 true 表示已弹出提示权限重要性的对话框。
    @Override
    public boolean onShowRationale(PermissionRequestExecutor executor, int requestCode,
                                   String[] permissions, boolean callOnResult) {
        if (!callOnResult) {
            PermissionDialogs.showDefaultRationaleDialog(this, executor, requestCode, permissions);
            return true;
        }
        return false;
    }

    // 必须在此回调中调用 HeyPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
    // 建立在 BaseActivity 或 BaseFragment 中重写此方法。
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
                                           @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        HeyPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
    }

Javadoc

https://parkingwang.github.io/hey-permission/

参考项目

hey-permission's People

Contributors

msdx avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.