三行注解搞定Android高版本动态申请权限

三行注解搞定Android高版本动态申请权限

大家好,有半年没有写博客了,见谅啊。今天跟大家介绍我在项目中使用到得一个动态申请权限得框架,我已经弄成lib了可以直接引用到项目里面使用.

  • 代码中使用
  • 如何引入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这个东西他默认会处理所有的二进制代码文件和库,刚好最近在做模块化,于是和支付模块冲突了…

这里写图片描述

???? 什么情况?找不到这类?
项目代码

支付宝jar

可以通过错误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会动态生成静态代码记得经常清理一下缓存

这是git上的项目地址



  1. https://baike.baidu.com/item/Aspectj/4830848 ↩︎

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值