无法在 android API 24 或更高设备中创建目录

Cannot create directory in android API 24 or higher devices

我正在开发我的 android 应用程序并通过模拟器 (Genymotion) 在支持的最低 SDK 中测试它,即 API 18 Jellybean。有一个用例,我必须下载一个 pdf 文件并将其保存在外部存储中。这在 API 18 模拟器中按预期工作,没有任何问题。然后我决定在我自己的设备上测试它,这是一个 API 24 的华为 Honor6x,但我得到了一个 FileNotFoundException。调试后我发现它没有在外部存储中创建目录。为了交叉检查这是否是我自己设备特有的问题,我安装了另外 2 个 API 24 的模拟器(Pixel XL 和 Galaxy S7)。我得到了同样的错误。是否有任何安全功能阻止我在 never 版本中创建文件夹?

这是我的代码

我有以下权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

这是我创建目录的代码

File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "/notespal");
    if (!directory.exists()){
        boolean created = directory.mkdirs();
    }

感谢您的帮助,因为我已经被困在这几天了。

确保授予 android.permission.WRITE_EXTERNAL_STORAGE 权限

int code = context.getPackageManager().checkPermission(
    android.Manifest.permission.WRITE_EXTERNAL_STORAGE, 
    context.getPackageName());
if (code == PackageManager.PERMISSION_GRANTED) {
   // todo create directory
}