在上一篇文章安卓如何申请sd卡权限并写入文件已经解决了向sd卡里面写入文件的问题了,解决办法需要startActivity,然后在onActivityResult
方法里面去监听是否授权成功,这种方法对当前Activity的侵入性太强了,如何优化呢?
我的想法来自于rxpermission和glide,我们知道rxpermission申请权限非常简单,只需要这么几句就搞定了:
RxPermissions.getInstance(this)
.request(permissions)
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean granted) {
if (granted) {
// 已经获取权限
} else {
// 未获取权限
}
}
});
那么这是如何实现的呢?
通过查看RxPermission源码发现,RxPermission是向当前activity植入一个fragment,由这个fragment来处理权限的监听。glide中也使用了这一种植入fragment的方法,监听当前界面的生命周期,从而确定是否需要加载图片。
基于这样一种方法,我们也来植入一个fragment,来处理权限问题。
项目代码连接:https://github.com/whoami-I/Sdc