无法在 Android/data 中创建文件夹

Unable to create folder inside Android/data

我在 Android/data 文件夹中创建文件夹时遇到问题。 我的代码需要创建文件夹,并从其中的资产文件夹复制一个文件。 这是我的代码:

private File getFileForShare(String filename) {
    try {
        String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
        File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName());
        if (!folder.exists()) {
            folder.mkdir();
        }
        AssetManager am = context.getAssets();
        InputStream inputStream = am.open("audio/" + filename);

        File f = new File(folder.getAbsolutePath(), filename);
        OutputStream outputStream = new FileOutputStream(f);
        byte buffer[] = new byte[1024];
        int length = 0;

        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }

        outputStream.close();
        inputStream.close();

        return f;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

我在初始化 OutputStream 对象时得到一个 FileNotFoundException。 此外,如果我转到 Android/data 文件夹,则不会创建包含我的应用程序包名称的新文件夹。 在清单中我设置了读写存储权限。怎么了?

What's wrong?

对于主要设备所有者来说,获取位于外部存储 Android/data/ 下的目录的正确方法是在可用的 Context 上调用 getExternalFilesDir()。替换:

    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    File folder = new File(extStorageDirectory, "/Android/data/" + context.getPackageName());

与:

    File folder = context.getExternalFilesDir();