Aung Aung Swe
Aung Aung Swe

Reputation: 262

Can't create folder in Android 7.0

I use this code to create folder.

 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();
        }

It is working with other devices but not with android v7.0.

I changed and tried with .getAbsolutePath() and .getPath(), but these changing also success on other devices ,7.0 still not yet.

And aslo there was enough permissions on manifest

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

Please help me. Thank you for reading.

Upvotes: 2

Views: 2221

Answers (2)

AskNilesh
AskNilesh

Reputation: 69709

if you run your app above Android 6.0 or onwards.you need ask run time permission add this request permission code in you activity file

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

            }

Upvotes: 1

Ahmad Aghazadeh
Ahmad Aghazadeh

Reputation: 17131

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();
        }
}

Upvotes: 2

Related Questions