android权限管理代码,GitHub - dfqin/PermissionGrantor: 一行代码搞定Android6.0动态权限授权、权限管理 || Android permission gr...

本文介绍了Android权限管理库Grantor的使用方法,包括修复小米设备的bug、更新对话样式、设置最小SDK版本为14等。Grantor简化了在非Activity类中请求权限的流程,并在用户拒绝权限时提供了解释对话框的选项。提供了请求摄像头、读取联系人和短信权限的示例代码,帮助开发者更方便地处理权限问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

update 2017-07-31

fix bug on XiaoMi device

update 2017-08-08

update dialog style

update 2017-08-29

set minSdkVersion to 14

update 2017-11-15

申请授权不依赖于Activity对象

Grantor

An Android permission grant util which is concise and easy to use. Normally you need to request permission in an Activity or Fragment and get the result by inheriting its method:

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

/* callback - no nothing */

}

If you request permissions in other Class(for example in a widget), things will become complicated. Grantor handle permission in alone Activity and simplify the work, when user deny permission, by default it's can show a dialog to explain why you need the permission, of course you can config it not to show the explaining dialog.

How to use

1 add to module's dependencies.

dependencies {

compile 'com.github.dfqin:grantor:2.5'

}

2 use in your code.

PermissionsUtil.requestPermission(Context context, PermissionListener listener, String[] permissions);

3 some demo.

private void requestCemera() {

PermissionsUtil.requestPermission(getApplication(), new PermissionListener() {

@Override

public void permissionGranted(@NonNull String[] permissions) {

Toast.makeText(MainActivity.this, "访问摄像头", Toast.LENGTH_LONG).show();

}

@Override

public void permissionDenied(@NonNull String[] permissions) {

Toast.makeText(MainActivity.this, "用户拒绝了访问摄像头", Toast.LENGTH_LONG).show();

}

}, Manifest.permission.CAMERA);

}

private void requestReadContact() {

PermissionsUtil.TipInfo tip = new PermissionsUtil.TipInfo("注意:", "我就是想看下你的通讯录", "不让看", "打开权限");

PermissionsUtil.requestPermission(this, new PermissionListener() {

@Override

public void permissionGranted(@NonNull String[] permissions) {

JSONArray arr = null;

try {

arr = getContactInfo(MainActivity.this);

if (arr.length() == 0) {

Toast.makeText(MainActivity.this, "请确认通讯录不为空且有访问权限", Toast.LENGTH_LONG).show();

} else {

Toast.makeText(MainActivity.this, arr.toString(), Toast.LENGTH_LONG).show();

}

} catch (JSONException e) {

e.printStackTrace();

}

}

@Override

public void permissionDenied(@NonNull String[] permissions) {

Toast.makeText(MainActivity.this, "用户拒绝了读取通讯录权限", Toast.LENGTH_LONG).show();

}

}, new String[]{Manifest.permission.READ_CONTACTS}, true, tip);

}

private void requestSms() {

PermissionsUtil.requestPermission(this, new PermissionListener() {

@Override

public void permissionGranted(@NonNull String[] permissions) {

Toast.makeText(MainActivity.this, "访问消息", Toast.LENGTH_LONG).show();

}

@Override

public void permissionDenied(@NonNull String[] permissions) {

Toast.makeText(MainActivity.this, "用户拒绝了读取消息权限", Toast.LENGTH_LONG).show();

}

}, new String[]{Manifest.permission.READ_SMS}, false, null);

}

4 the demo image.

grant1.gif

grant2.gif

grant3.gif

License

The MIT License (MIT)

Copyright (c) 2017, dfqin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值