当在Android Studio中使用设备文件浏览器时,有时会出现权限被拒绝的错误。以下是解决此问题的一种可能方法:
private static final int REQUEST_PERMISSION = 1;
private void checkPermissions() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_PERMISSION);
} else {
// 已经获得权限
// 执行需要权限的操作
performFileBrowser();
}
} else {
// 不需要运行时权限
// 执行需要权限的操作
performFileBrowser();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了权限
// 执行需要权限的操作
performFileBrowser();
} else {
// 用户拒绝了权限
// 处理拒绝权限的情况
}
}
}
private void performFileBrowser() {
// 在此执行需要权限的操作,例如打开设备文件浏览器
}
checkPermissions()
方法。这样,在使用设备文件浏览器之前,会先检查是否获得了相关的权限。如果没有获得权限,会向用户请求权限。如果用户授予了权限,会执行需要权限的操作,例如打开设备文件浏览器。如果用户拒绝了权限,可以根据需求进行相应的处理。