代码之家  ›  专栏  ›  技术社区  ›  Aung Aung Swe

无法在Android 7.0中创建文件夹

  •  2
  • Aung Aung Swe  · 技术社区  · 7 年前

    我使用此代码创建文件夹。

     File folder2 = new File(Environment.getExternalStorageDirectory() + "/Android");
            if (!folder2.exists()) {
                folder2.mkdir();
            }
    
    
     File folder = new File(Environment.getExternalStorageDirectory() + "/Android/MyFolder");
            boolean success = true;
            if (!folder.exists()) {
                success = folder.mkdir();
            }
    

    我改变并尝试了.getAbsolutePath()和.getPath(),但这些改变在其他设备上也成功了,7.0还没有成功。

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Ahmad Aghazadeh    7 年前
    public static final int MULTIPLE_PERMISSIONS = 10; // code you want.
    
     String[] permissions= new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
            };
    
    
    if (checkPermissions())
             //  permissions  granted.    
              createFolder();
    }
    
    private  boolean checkPermissions() {
            int result;
            List<String> listPermissionsNeeded = new ArrayList<>();
            for (String p:permissions) {
                result = ContextCompat.checkSelfPermission(getActivity(),p);
                if (result != PackageManager.PERMISSION_GRANTED) {
                    listPermissionsNeeded.add(p);
                }
            }
            if (!listPermissionsNeeded.isEmpty()) {
                ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),MULTIPLE_PERMISSIONS );
                return false;
            }
            return true;
        }
    
    
    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case MULTIPLE_PERMISSIONS:{
                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    // permissions granted.
                    createFolder();
    
                } else {
                    String permissions = "";
                    for (String per : permissionsList) {
                        permissions += "\n" + per;
                    }
                    // permissions list of don't granted permission
                }
                return;
            }
        }
    }
    
    private void createFolder()
    {
    File folder2 = new File(Environment.getExternalStorageDirectory() + "/Android");
            if (!folder2.exists()) {
                folder2.mkdir();
            }
    
    
     File folder = new File(Environment.getExternalStorageDirectory() + "/Android/MyFolder");
            boolean success = true;
            if (!folder.exists()) {
                success = folder.mkdir();
            }
    }
    
        2
  •  0
  •   AskNilesh    7 年前

    如果你在Android 6.0或更高版本上运行应用程序。你需要问 run time permission 在活动文件中添加此请求权限代码

     String permission = Manifest.permission.WRITE_EXTERNAL_STORAGE;
                if (ActivityCompat.checkSelfPermission(MainActivity.this, permission)
                        != PackageManager.PERMISSION_GRANTED
                        ) {
                    ActivityCompat.requestPermissions(MainActivity.this, new String[]
                            {permission},123);
    
                }