Following code is working with other APIs but 26
public static boolean cretaeDir()
{
    String dir = Environment.getExternalStoragePublicDirectory(Environment.MEDIA_SHARED).getAbsolutePath();
    java.io.File folder = new java.io.File(dir + "/SomeFolderName");
    if (!folder.exists()) {
        try{
            if(folder.mkdir()) {
                Log.e("Creating Folder", "Success");
                return true;
            } else {
                Log.e("Creating Folder", "Failed");
                return false;
            }
        } catch(Exception e){
            e.printStackTrace();
            return false;
        }
    }else{
        return true;
    }
}
Before some one ask, Yeah the permissions have been granted and also uses-permission present in the Manifest file.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.name">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="com.android.vending.BILLING" />
<!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
<application/>
Test Device is Samsung S8, Running 8.0.0
 
     
     
     
    