PermissionsDispatcher 是一個(gè)基于注解斋否、幫助開發(fā)者簡(jiǎn)單處理Android 6.0系統(tǒng)中的運(yùn)行時(shí)權(quán)限的開源庫(kù)澈魄。
開源地址:https://github.com/hotchemi/PermissionsDispatcher
1、添加依賴
???? implementation('com.github.hotchemi:permissionsdispatcher:2.4.0')
??? ? ? {
??? ? ? ? ? ?? excludemodule:"support-v13"
? ? ? ?? }
?? annotationProcessor'com.github.hotchemi:permissionsdispatcher-processor:2.4.0'
2等孵、在Activity或Fragment中使用
????? 1:在對(duì)應(yīng)的Activity類上面添加注解葵硕,比如MainAcitvity
??????????? @RuntimePermissions
???????????? public class MainActivity? extends? BaseActivity
?????????? ?? {
??????????????????? ......
????????????????? 初始化...
?????????????????? void initView()
???????????????????? ? ? ? {
???????????????????????????????????????? if (Build.VERSION.SDK_INT >23) {
????????????????????????????????????????????? 調(diào)用輔助類里面的方法完成應(yīng)用的權(quán)限請(qǐng)求
??????????????????????????????????????????? ?? MainActivityPermissionsDispatcher.initPermissionWithCheck(this);
????????????????????????????????????????????? }
?????????????????????????? }
????????? ? ? }
MainActivityPermissionsDispatcher的來(lái)由:
只有@RuntimePermissions和@NeedsPermission是必須的负乡,其余注解均為可選愧薛。當(dāng)使用了@RuntimePermissions和@NeedsPermission之后杯缺,需要點(diǎn)擊菜單欄中Build菜單下的Make Project砰左,或者按快捷鍵Ctrl + F9編譯整個(gè)項(xiàng)目匿醒,編譯器會(huì)在app\build\intermediates\classes\debug目錄下與被注解的Activity同一個(gè)包下生成一個(gè)輔助類,名稱為被注解的Activity名稱+PermissionsDispatcher.class
?????????????
????? @NeedsPermission注解在需要調(diào)用運(yùn)行時(shí)權(quán)限的方法上缠导,當(dāng)用戶給予權(quán)限時(shí)會(huì)執(zhí)行該方法
//這里是動(dòng)態(tài)獲取對(duì)文件操作的權(quán)限
??? @NeedsPermission({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.MOUNT_FORMAT_FILESYSTEMS,????? Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS})
?void initPermission() {
?}
@OnShowRationale 注解在用于向用戶解釋為什么需要調(diào)用該權(quán)限的方法上廉羔,只有當(dāng)?shù)谝淮握?qǐng)求權(quán)限被用戶拒絕,下次請(qǐng)求權(quán)限之前會(huì)調(diào)用
@OnShowRationale({Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.MOUNT_FORMAT_FILESYSTEMS, Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS})
void onShowRationale(final PermissionRequest request) {
new AlertDialog.Builder(this)
.setMessage("需要獲取一些權(quán)限")
.setPositiveButton("趕緊點(diǎn)允許嘛~~", new DialogInterface.OnClickListener() {
@Override
? ? ? ? ? ? ? ? public void onClick(DialogInterface dialog, int which) {
???????????????????????? request.proceed();
? ? ? ? ? ? ? ? }
})
.setNegativeButton("又尼瑪決絕嗎僻造?", new DialogInterface.OnClickListener() {
@Override
? ? ? ? ? ? ? ? public void onClick(DialogInterface dialog, int which) {
????????????????????? request.cancel();
? ? ? ? ? ? ? ? }
})
.show();
}
小小記錄一下憋他,以防下次用的時(shí)候忘了,,,如有錯(cuò)誤的地方,請(qǐng)大佬們指出.....