版权声明:未经准许,不得私自转载! https://blog.csdn.net/Pusherson/article/details/84244523
第一次封装库,有问题欢迎提出来,哈哈哈^_^
Android6.0之后就要求敏感权限动态申请,网上也有很多大佬封装的库,本人也没研究。本着自娱自乐的精神,写了一个。若有不完善需要改进的地方,欢迎大家提出,我也希望借鉴下不同的思想。本人菜鸟一枚,请包涵!!!
先上效果图:
下面贴出使用的核心代码:
1.在项目的build.gradle里边添加仓库地址
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2.在项目moudle的build.gradle里边添加依赖
dependencies {
compile 'com.github.15827348069:GMPermission:28dbfd9c24'
}
3.在要申请权限的地方如下使用:
//申请权所需要的对象
mGmPermissions = GMPermissions.instance().setParameter(this, this, PermissionC.WR_FILE_CODE);
mGmPermissions.setPermissionCallBackExcute(this);
下面贴出demo示例中的代码:
public class DemoActivity_01 extends AppCompatActivity implements GMPermissions.PermissionCallBackExcute {
private ImageView mShowIv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo_01);
Button selectImgBtn = findViewById(R.id.selectImgBtn);
mShowIv = findViewById(R.id.showIv);
//获取申请权限的对象
GMPermissions gmPermissions = GMPermissions.instance();
gmPermissions.setPermissionCallBackExcute(this);
selectImgBtn.setOnClickListener(v -> {
//检查权限,没有则申请权限 --->从Android 4.2开始向上兼容
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
/**
* 例如读取文件权限,将权限数组作为参数传进去
*/
GMPermissions.skipPermissionActivity(DemoActivity_01.this,
PermissionC.WR_FILES_PERMISSION);
}
});
}
@Override
public void excutePermissionCodes() {
//这里执行 获取权限后的操作
//选择图片
new GMSelectImg().picImgsOrVideo(this, PermissionC.PIC_IMG_VIDEO_CODE, 1);
}
//这是获取权限后执行代码接受到的结果,需要的也可以封装进来。这里不做封装,只封装动态权限请求部分
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//获取结果
switch (requestCode) {
case PermissionC.PIC_IMG_VIDEO_CODE:
//选择图片的结果
if (resultCode == Activity.RESULT_OK) {
List<Uri> mSelected = Matisse.obtainResult(data);
//设置选择的图片
GlideUtil.loadImageWithLocation(DemoActivity_01.this,
mSelected.get(0), mShowIv);
}
break;
}
}
}