如何在 /storage/emulated/0 中创建目录

时间:2021-06-20 10:29:57

标签: android directory permissions storage

我在第一个活动打开时编写此代码的内容,并且我还在运行时获得了用户权限。

权限:

<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_DOCUMENTS"
        tools:ignore="ProtectedPermissions" />

代码:

        private void createFolder()
        {
               File myFolder=new File(Environment.getExternalStorageDirectory(),"MyFolder");
               if (!myFolder.exists()){
                   myFolder.mkdirs();
                   if (!myFolder.exists()&&myFolder.isDirectory()){
                       File myChild=new File(musicVideo.getAbsolutePath(),"MyChild");
                            if (!myFolder.exists()){
                                myChild.mkdirs();
                            }
                        }
               }else {
                   if (!myFolder.exists()&&!myFolder.isDirectory()){
                     File myChild=new File(myFolder.getAbsolutePath()+File.separator+"MyChild");
                        if (!myFolder.exists()){
                            myChild.mkdirs();
                        }
                   }else {
                       Toast.makeText(this, "fail", Toast.LENGTH_SHORT).show();
                   }
                     Toast.makeText(this, "fail", Toast.LENGTH_SHORT).show();
              }
        }

1 个答案:

答案 0 :(得分:1)

剩下的就是在运行时请求用户权限

您可以使用如下实用程序方法: 在执行操作之前检查是否已授予权限

public  boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v(TAG,"Permission is granted");
            return true;
        } else {

            Log.v(TAG,"Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            return false;
        }
    }
    else { //permission is automatically granted on sdk<23 upon installation
        Log.v(TAG,"Permission is granted");
        return true;
    }
}

确保 Activity 实现 onRequestPermissionsResult

编辑 由于您在评论部分的要求,您的条件测试中有很多错误。使用 createFolder()

创建目录和子目录 MyFolderMyChild

使用:

private void createFolder()
    {
        File myFolder=new File(Environment.getExternalStorageDirectory(),"MyFolder");
        if(!myFolder.exists() || myFolder.isFile()){
            if(myFolder.isFile()){
                Toast.makeText(getApplicationContext(), "'MyFolder' exists as file", Toast.LENGTH_LONG).show();
                return;
            }
            try{
                myFolder.mkdir();
                File myChild=new File(myFolder.getAbsolutePath()+File.separator+"MyChild");
                myChild.mkdir();
                
                Toast.makeText(getApplicationContext(), "Directories created successfully", Toast.LENGTH_SHORT).show();
            } catch(Exception e){
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
            
            
        }
    }

在你的实现中:

isStoragePermissionGranted();
createFolder();

第一行验证存储权限是否被授予 第二个创建文件夹

相关问题