封装权限工具类PermissionUtil

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoshuxgh/article/details/88745290
public class PermissionUtil {
    public static int REQUEST_CODE = 22;
    public static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};

    /**
     * 检查单个权限
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public static boolean checkPermission(Context context, @NonNull String permission) {
        List<String> noPermission = new ArrayList<>();
        // 检查该权限是否已经获取
        int i = ContextCompat.checkSelfPermission(context, permission);
        // 权限是否已经 授权 GRANTED---授权  DINIED---拒绝
        if (i == PackageManager.PERMISSION_GRANTED) {
            return true;
        }
        return false;
    }

    /**
     * 检查多权限
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public static String[] checkPermission(Context context, @NonNull String... permissions) {
        List<String> noPermission = new ArrayList<>();
        for (String permission : permissions) {
            // 检查该权限是否已经获取
            if (!checkPermission(context, permission)) {
                noPermission.add(permission);
            }
        }
        String[] result = new String[noPermission.size()];
        return noPermission.toArray(result);
    }

    /**
     * 动态申请权限
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public static void requestPermission(Activity context, String... permissions) {
        if (permissions.length > 0) {
            context.requestPermissions(permissions, REQUEST_CODE);
        }
    }

    /**
     * 动态申请权限
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public static void checkAndRequestPermissions(Activity context, String... permissions) {
        requestPermission(context, permissions);
    }

}
public class StartActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (Build.VERSION.SDK_INT >= 23 && PermissionUtil.checkPermission(this, PermissionUtil.PERMISSIONS_STORAGE).length > 0) {
            PermissionUtil.checkAndRequestPermissions(this, PermissionUtil.PERMISSIONS_STORAGE);
        } else {
            intentToMainActivity();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        boolean hasPermissionDenin = false;
        if (requestCode == PermissionUtil.REQUEST_CODE) {
            for (int i = 0; i < grantResults.length; i++) {
                if (grantResults[i] == -1) {
                    hasPermissionDenin = true;
                    break;
                }
            }
            if (hasPermissionDenin) {
                Toast.makeText(this, StringUtil.getString(this, R.string.deny_permissions_warning), Toast.LENGTH_LONG).show();
            }
            intentToMainActivity();
        }
    }

    private void intentToMainActivity() {
        Intent intent = new Intent(this, MainActivity.class);
        startActivity(intent);
        this.finish();
    }
}

猜你喜欢

转载自blog.csdn.net/xiaoshuxgh/article/details/88745290