一段简单的代码 android 6.0动态权限适配工具
用不习惯其他第三方的权限适配工具,空余时间,自己动手封装了一个简洁的权限适配工具
效果图
依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 1
- 2
- 3
- 4
- 5
- 6
dependencies {
compile 'com.github.Xiaohy61:Permission:1.0.1'
}
- 1
- 2
- 3
- 4
使用
1.单个权限申请:
RequestPermission.request(MainActivity.this, new OnPermissionListener() {
@Override
public void onPermissionSuccess() {
Toast.makeText(MainActivity.this,"取得权限",Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionFailure(String[] permission) {
Toast.makeText(MainActivity.this,"禁止权限",Toast.LENGTH_SHORT).show();
}
}, Manifest.permission.WRITE_EXTERNAL_STORAGE);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
2.多个权限申请:
RequestPermission.request(MainActivity.this, new OnPermissionListener() {
@Override
public void onPermissionSuccess() {
Toast.makeText(MainActivity.this,"取得权限",Toast.LENGTH_SHORT).show();
}
@Override
public void onPermissionFailure(String[] permission) {
Toast.makeText(MainActivity.this,"禁止权限",Toast.LENGTH_SHORT).show();
}
}, Manifest.permission.CALL_PHONE,Manifest.permission.CAMERA);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
RequestPermission :
1.首先判断是否拥有申请的权限,作状态回调
public class RequestPermission {
public static void request(Context context, OnPermissionListener listener, String... permissions) {
//如果拥有权限,回调成功结果,缺少或者没有就去PermissionDialogFragment申请权限
if(hasPermission(context,permissions)){
listener.onPermissionSuccess();
}else {
PermissionDialogFragment dialogFragment = PermissionDialogFragment.newInstance(permissions);
dialogFragment.onPermissionListener(listener);
dialogFragment.show(((FragmentActivity) context).getSupportFragmentManager(), "dialog");
}
}
/**
* 是否拥有了申请的权限
* @param context
* @param permissions
* @return boolean
*/
public static boolean hasPermission(Context context,String... permissions){
for (String permission: permissions) {
if(PermissionChecker.checkSelfPermission(context,permission) != PackageManager.PERMISSION_GRANTED){
return false;
}
}
return true;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
PermissionDialogFragment :
源码有详细说明,就不罗嗦了
github源码
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>