1

我正在尝试在我的手机存储中(不在 sdcard 上)使用我的 android 应用程序生成一个文件夹,但我mkdirs()无法正常工作。

我已android.permission.WRITE_EXTERNAL_STORAGE在清单中设置并使用此基本代码:

    File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "/MyDirName");

    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d("App", "failed to create directory");
        }
    }

但它不起作用......mkdirs始终为 false 并且未创建文件夹。

我已经尝试了所有方法并查看了有关它的所有主题,但没有任何效果,我不知道为什么。

4

3 回答 3

3

如果您的目标和编译 sdk 比 lolipop 更高,请参考链接

或者

File sourcePath = Environment.getExternalStorageDirectory();

                File path = new File(sourcePath + "/" + Constants.DIR_NAME + "/");

                path.mkdir();
于 2017-04-25T13:11:29.583 回答
0

在为 android API 29 及更高版本编写代码时,在您的应用程序清单 (AndroidManifest.xml) 中使用以下权限

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

然后在你的java文件中添加以下代码行

    `ActivityCompat.requestPermissions(this, new String[]
                    {
                            Manifest.permission.READ_EXTERNAL_STORAGE,
                            Manifest.permission.WRITE_EXTERNAL_STORAGE
                    },
            PackageManager.PERMISSION_GRANTED);

    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());

    file = new File(Environment.getExternalStorageDirectory().getPath(), "MyDirName/");
    if (!file.exists()) {
        try {
            file.mkdirs();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

`

于 2022-02-17T15:37:53.567 回答
0

如果您是 Android Studio 的模拟器和设备文件资源管理器,请确保右键单击模拟器的文件夹,然后单击“同步”以更新显示的文件。设备文件资源管理器不会自行实时更新。

于 2021-07-09T07:33:47.010 回答