Aspectj 解决Android 6.0以上权限问题
声明 :所有技术截取自 T -mvp,感谢作者以及群友的支持。
废话不多说,上个图,显示当前解决办法简单便捷性
框架搭成后,通过Permission这个注解,来标注一些涉及权限的方法。注解的Value里要明确指出该方法中所涉及的权限。实际执行时,通过弹窗提示,获得权限。
本次重点不为贴代码。代码请参看github.项目创建 构建的所有使用流程,都在代码中做了标注。具体如图
下面,简单的介绍一下,使用原理(大神可忽略这一段,我尽量用白话文说,加入自己的理解) Android 6.0的权限问题,大概流程,为 获得权限,然后执行相关权限操作。并且,简单说,获得权限的过程基本都一样,不一样的地方,也就是权限的名称了。这也是注解为什么加入Value的原因。AspectJ的做用,就是在编译期间,将代码织入进去(就是不用你写)下面看一下有关AspectJ的代码逻辑
这里的代码,基本为Android代码,只是一些必要的注解 @Aspect 与Aroud 为AspecJ中,这里实现的代码的织入的过程。或许有点难理解,我拿一个更简单的例子来说,
这里onLog原方法,只有一条log输出语句,通过AspectJ Aroud,代码替换,在原方法前面与后面加入两句Log,简单粗暴改变源码。这样理解是不是好一点?
以上,基本为所有内容。没有特别做一些深入的原理解释,代码里重点引导使用过程。想要更深入的理解,也请恕我无能为力。在此仅仅为大家提供一种方法解决问题。
ps:这次截取,经过作者同意,感谢作者North_2016,附上T-mvp Github
ps2:有一个难点,就是为Gradle 写Plugin的过程,推荐文章在AndroidStudio中自定义Gradle插件,相关注意事项在里面写的比较详细
ps3:我看得远,是因为我站在巨人的肩膀上。(卖个萌,手动滑稽)