Q:

Не создается папка при первом запуске в мобильном приложении

Всем привет! Такая проблема, при первом запуски приложения не создается фолдер, если его перезапустить - фолдер создаётся. Если до первого запуска дать разрешение на хранилище - папке создается. Для получения разрешения юзаю TedPermission (стандартным методом тоже пробовал)
Мой код: 
...
  private static String FOLDER = "NewFolder";
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    PermissionListener permissionlistener = new PermissionListener() {
        @Override
        public void onPermissionGranted() {}
        @Override
        public void onPermissionDenied(List<String> deniedPermissions) {}
    };
    TedPermission.with(this)
            .setPermissionListener(permissionlistener)
            .setPermissions(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE)
            .check();

    createFolder(); // создаем папку
...
}

private File createFolder() {
    File folder = new File(Environment.getExternalStorageDirectory(), FOLDER);

    if (folder.exists())
        return folder;

    if (folder.isFile())
        folder.delete();

    if (folder.mkdirs())
        return folder;

    Environment.getExternalStorageDirectory();
        return folder;}

Разрешения на хранилище он получает, но папку создает только после 2 запуска. 
Пробовал еще такие варианты как:
File nfile=new File(Environment.getExternalStorageDirectory()+"/NewFolder");
        nfile.mkdir();

и
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
        Log.d("MyApp", "No SDCARD");
    } else {
        File directory = new File(Environment.getExternalStorageDirectory()+File.separator+"NewFolder");
        directory.mkdirs();
    }

В манифесте тоже все объявлено 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.asd.dsa">

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

A:

Ну все правильно. Запрос на предоставление разрешения на запись он не блокирующий (асинхронный), то есть вы вешаете запрос на предоставление разрешения и сразу же "проваливаетесь" в createFolder(), который естественно благополучно проваливается, поскольку разрешение еще не granted
Вам надо "посадить" createFolder() на ветку PermissionListener.onPermissionGranted()

