2017-01-25-写在腊月28,纪念我的第一个开源库的诞生

今天的2017年1月25日,相信很多人都踏上了归途,而我明天才能回家,经过这两天的折腾,我的第一个开源库总算诞生了,写第一个库的时候,我知道自己水平不高,要写就得是实用的,于是写了一个每个人都需要的Android M的权限申请库。帮助程序简化权限申请流程,目前经过我测试,工作良好。

好了,我们来看看我们的权限申请库。

简介

权限库名为:PermissionTools

PermissionTools一个用于Android权限申请的工具库,不过必须是应用target版本为23或者更高时才能使用

引入

project’s build.gradle (工程下的 build.gradle)

1
2
3
4
5
6
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}

module’s build.gradle (模块的build.gradle)

1
2
3
dependencies {
compile 'com.github.Jerey-Jobs:PermissionTools:1.4'
}

Usage/用法

我们来看一下怎么使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PermissionTools permissionTools;
permissionTools = new PermissionTools.Builder(this)
.setOnPermissionCallbacks(new PermissionCallbacks() {
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
Toast.makeText(MainActivity.this,"权限申请通过",Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
Toast.makeText(MainActivity.this,"权限申请被拒绝",Toast.LENGTH_SHORT).show();
}
})
.setRequestCode(111)
.build();
permissionTools.requestPermissions(Manifest.permission.CAMERA);

and in onRequestPermissionsResult

1
2
3
4
5
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
permissionTools.onRequestPermissionsResult(requestCode,permissions,grantResults);
}

是不是很简单,比我们调用系统的简单很多,虽然其实内部实现还是调的系统的。


实现

  • 流程
1
2
3
4
5
6
7
8
9
10
11
检查是否拥有权限-> 有权限 -> 回调权限申请成功
|
没有权限是否需要弹窗请求-> 不需要 -> 是否是被设置为永不提醒
|
需要弹窗请求,监听是否点击确认-> 未点击 -> 权限申请被拒绝
|
点击确认主动申请权限,回调结果onRequestPermissionsResult
|
回调结果判断权限是否申请成功 -> 失败回调
|
成功回调

谢谢大家阅读,如有帮助,来个喜欢或者关注吧!


本文作者:Anderson/Jerey_Jobs

博客地址 : 夏敏的博客/Anderson大码渣/Jerey_Jobs
简书地址 : Anderson大码渣
CSDN地址 : Jerey_Jobs的专栏
github地址 : Jerey_Jobs