首页 > 解决方案 > Android在内部根目录中创建文件夹

问题描述

我需要在内存根目录中创建一个文件夹并在其中创建一个文件,但找不到下面的代码工作。

        String path = Environment.getRootDirectory().toString();

        File mFolder = new File(path,"Folder");
        if (!mFolder.exists()) {
            boolean res = mFolder.mkdir();
        }

并且 mkdir 总是返回 false。我已经找到了getDataDirectory()getFilesDir()但我不需要。我需要创建一个目录,其中内存根位置(我们打开内存时首先看到的位置)

编辑:

根文件夹我的意思是我们在使用文件浏览器打开的内部存储器上看到的第一个位置。在哪里我可以看到DownloadPicturesAndroid

标签: javaandroid

解决方案


你应该使用getExternalStorageDirectory()并且你应该请求它的写权限。

但是注意getExternalStorageDirectory()在 android 29 上已弃用,这意味着您应该使用getExternalFilesDir(), getExternalCacheDir(),或者getExternalMediaDir()如果您根据文件的内容定位较新的 android 版本。

您应该请求对清单的写入权限(对于旧的 android 版本,Build.VERSION.SDK_INT < 23)并在运行时请求它们(对于较新的 android 版本,Build.VERSION.SDK_INT >= 23)

检查用户是否已授予外部存储权限:

if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    Log.v(TAG,"Permission granted");
    //File write logic here
    return true;
}

如果未授予许可,您应该提出以下要求:

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);

并实现OnRequestPermissionResult以获取结果回调。

所有这些信息和更多代码都可以在这里找到https://developer.android.com/training/permissions/requesting


推荐阅读