最近整理了一個Android 6.0以上的權(quán)限獲取工具亚享,要用到就直接復(fù)制粘貼好了
用法
采用Glide的Fragment依附思想,無需繼承Activity绘面,傻瓜式調(diào)用欺税,傳入權(quán)限的String參數(shù)為可變長度型,支持2種模式
- 普通的Callback回調(diào)
- 通過RxJava2生成事件流
Callback用法:
//PermissionManager在action包下
PermissionManager.with(this)
.request(new PermissionManager.Callback() {
@Override
public void call(PermissionResult result) {
process(result);
}
}, Manifest.permission.WRITE_EXTERNAL_STORAGE);
RxJava2用法
//PermissionManager在rx包下
PermissionManager.with(this)
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer<PermissionResult>() {
@Override
public void accept(@NonNull PermissionResult permissionResult) throws Exception {
process(permissionResult);
}
});
返回的權(quán)限結(jié)果處理實例:
private void process(PermissionResult permissionResult) {
if (permissionResult.isSuccessful()) {
Toast.makeText(getApplicationContext(), "成功GET√", Toast.LENGTH_SHORT).show();
return;
}
if (permissionResult.isDisable()) {
//用戶傲嬌的勾選了不再提示揭璃,并且拒絕了權(quán)限
Toast.makeText(getApplicationContext(), "權(quán)限被禁用啦晚凿,請手動開啟權(quán)限", Toast.LENGTH_SHORT).show();
PermissionManager.toSetting(MainActivity.this);
} else {
//用戶拒絕了權(quán)限
Toast.makeText(getApplicationContext(), "寶寶摔倒了,要開啟權(quán)限才能爬起來~~~", Toast.LENGTH_SHORT).show();
}
}
Ps:request
方法用@TargetApi
修飾塘辅,API23以下不執(zhí)行
最后附上一些6.0以上的危險權(quán)限(默認不開啟)
9個大類分別是
- 讀寫日歷
- 相機
- 通訊錄的讀寫
- 位置
- 麥克風(fēng)
- 通話相關(guān)
- 傳感器
- 短信相關(guān)
- 手機存儲
其中在6.0以上晃虫,在對應(yīng)分組下只要有一條權(quán)限被授權(quán),當前分組下的所有權(quán)限都被授權(quán)