HaloPermission
An Android permission library developed by Kotlin language with higher extensibility and compatibility.
Kotlin 语言开发的具有高可扩展性和可控性的 Android 权限库。
Features
- 良好的设计和可扩展性(个人觉得最区别于别的库的最主要原因)
- 兼容到 8.0 所需要的相关特殊权限,并可以很好的进行扩展(未知来源、悬浮窗、系统设置修改、通知、通知渠道等权限的处理)
- 支持 RationaleRender(向用户解释为什么申请权限)
- 支持 SettingRender(当权限没有授权时,可以打开权限设置界面进行设置,并自动检测设置是否改变)
- 更好的系统权限设置界面兼容性(尽量兼容不同的系统厂商的权限设置界面)
- 6.0 以下权限支持(不建议,感觉没必要了)
HaloPermission 解惑(Why choose "HaloPermission")
您可能对 HaloPermission 有诸多疑问:已经有那么多成熟的权限处理框架,为什么要用这个?这个有什么值得使用的理由?为什么这个库的星星这么少?这库到底靠谱不靠谱?... 希望HaloPermission 解惑能够消除您心中的疑虑。
Setup
在使用 HaloPermission 的 Module 的 build.gradle 中添加以下依赖:
dependencies {
//gradle 3.+以后不是使用'compile'方法,而是使用'implementation' or 'api'等方式
compile('halo.android:permission:1.0.5-rc@aar'){
//传递依赖
transitive = true
}
}
额外配置说明:
V7 依赖说明
HaloPermission 依赖
com.android.support:appcompat-v7:28.0.0
包(本身也依赖 v4 包,但 v7 依赖 v4,所以引入 v7 即可),如果与您工程依赖的版本不一致,你可以排除 HaloPermission 的版本依赖。但是`appcompat-v7`的版本不能低于 24.1.+
compile('halo.android:permission:1.0.5-rc@aar'){ //传递依赖 transitive = true //排除 appcompat-v7 依赖 exclude group: 'com.android.support', module: 'appcompat-v7' }
Kotlin 依赖说明(项目不支持 Kotlin 开发的童鞋可以忽略)
HaloPermission 是基于
org.jetbrains.kotlin:kotlin-stdlib:1.3.11
开发的,如果您的工程也支持 Kotlin 开发,并且与 HaloPermission 版本不一致,您可以排除 HaloPermission 对kotlin-stdlib
的依赖。 但是kotlin-stdlib
的版本最好不能低于 1.3.11compile('halo.android:permission:1.0.5-rc@aar'){ //传递依赖 transitive = true //排除 kotlin-stdlib 依赖 exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib' }
Usage
运行效果图
直接下载 demo 运行吧。。。 Demo 下载地址
缺陷说明
对于 6.0 以下的权限处理,某些权限校验可能并不准确,这一部分稍后进一步说明原因。 不仅 HaloPermission 如此,大多数有名的框架也不能解决这些问题。但是这并不影响 app 的正常逻辑流程,因为在后续流程中你能够得到更具体的一些信息。
联系方式
QQ:862638161
Email:super_luo@163.com
如需交流,欢迎讨论