一个优雅的 android 6.0动态权限适配工具
效果图
依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.Xiaohy61:Permission:1.1'
}
使用
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();
}
@Override
public void onCancelClick() {
Toast.makeText(MainActivity.this, "点击取消按钮", Toast.LENGTH_SHORT).show();
}
}, Manifest.permission.WRITE_EXTERNAL_STORAGE);
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();
}
@Override
public void onCancelClick() {
Toast.makeText(MainActivity.this, "点击取消按钮", Toast.LENGTH_SHORT).show();
}
}, Manifest.permission.CALL_PHONE,Manifest.permission.CAMERA);
RequestPermission :
1.首先判断是否拥有申请的权限,作状态回调
public class RequestPermission {
public static boolean isStartActivity;
public static void request(@NonNull Context context, @NonNull OnPermissionListener listener, @NonNull String... permissions) {
if (hasPermission(context, permissions)) {
listener.onPermissionSuccess();
} else {
if(!isStartActivity){
Intent intent = new Intent(context,PermissionDialogActivity.class);
intent.putExtra("permissions", permissions);
PermissionDialogActivity.onPermissionListener(listener);
context.startActivity(intent);
isStartActivity = true;
}
}
}
/**
* 是否拥有了申请的权限
*
* @param context
* @param permissions
* @return
*/
public static boolean hasPermission(Context context, String... permissions) {
for (String permission : permissions) {
if (PermissionChecker.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
}
PermissionDialogActivity :
源码有详细说明,就不罗嗦了
github源码