赞
踩
大家好,有半年没有写博客了,见谅啊。今天跟大家介绍我在项目中使用到得一个动态申请权限得框架,我已经弄成lib了可以直接引用到项目里面使用.
在需要申请权限得函数上添加注解如定位权限:
@Permission(Manifest.permission.ACCESS_FINE_LOCATION)//写上需要申请的权限一个或若干用,隔开即可
private fun positioning() {
//开始你得定位代码
}
用户同意后会执行 positioning()函数里面,开始执行你写得定位代码。同样有同意,就有拒绝。
@PermissionCanceled //点击取消执行这个函数
private fun cancel() {
showToast("你拒绝了这个权限")
}
@PermissionDenied//点击取消和不在提醒 执行这个函数 注意 这个函数执行后 会自动跳转到手机系统设置权限得页面
private fun denied() {
showToast("没有这个权限手机无法正常使用")
}
到这里就完了? 嗯哼~对,到这里就完了(别忘了再配置清单里面添加对应得权限)就是这么简单。
来一个gif感受一下
##如何引入lib到自己得项目中?
要使用这个lib得很简单下载这个lib到自己项目中引入。
需要注意得地方:
在主项目app得build.gradle 里面添加 这几句代码
apply plugin: 'com.hujiang.android-aspectjx'
在主项目最外面的build.gradle中添加
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'
做完上面这几步同步一下就可以正常使用了。是不是很简单?
##可能遇到得问题
其实我最想写的就是这个模块!!!因为一个问题卡了我一个星期,才解决。就是用这个申请权限lib的时候因为使用了
aspectj1.。这个是AOP用的一个框架,想知道具体干什么的可以点击脚注看看这里就不说别的了。因为aspectj这个东西他默认会处理所有的二进制代码文件和库,刚好最近在做模块化,于是和支付模块冲突了…
???? 什么情况?找不到这类?
可以通过错误log和lib里面的支付宝jar里面的目录知道是因为找不到这个Paytask报错的那么为什么呢?
重复一下上面的一句话
因为aspectj这个东西他默认会处理所有的二进制代码文件和库
那么如何解决呢?我找过支付宝客服,以为是支付宝jar的问题,结果被告知使用了aspectj要自己解决。。。
好吧,我找github上aspectjx 这个作者,我用的是他封装的。发现了忽略的一个东西(狂汗不止)
要过滤第三方的东西 好了 按照说的 写好后,虎躯一震~~~
嗯哼?是的还是之前的错。于是又把文档看了几遍,没问题。。。。。。。
顿时头大无比。突然开窍了试了下!
解决办法在app的build.gradle中写如下代码:
aspectjx {
//排除所有package路径中包含`android.support`的class文件及库(jar文件)
exclude 'com/alipay'
}
过滤第三方jar包下的文件,注意包名不适用.是用/隔开 (就是这个地方卡了我一个星期)
ok 到这里 已经结束了,有其他问题的小伙伴可以联系我
END
QQ:846925073
邮箱:zouzou1111@qq.com
PS:项目过几天会补上,各位稍等。
有好几个同学反映说过滤的代码不知道写在哪里
路径 app目录下的build.gradle文件中 划重点: android{} 外面
然后clear 清理一下缓存 因为aop会动态生成静态代码记得经常清理一下缓存
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。