Attempt to get length of null array kotlin

Подскажите пожалуйста в чём может быть проблема. есть 2 одинаковых приложения (на java и эквивалент на kotlin) с одинаковыми пермишинами

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

в этих приложениях есть одинаковый Java class

public class ShinimaHuynya {

private static ShinimaHuynya instance;

public static ShinimaHuynya getInstance() {
    return instance;
}

ShinimaHuynya(){
    this.instance = this;
}



boolean requestPermission(Activity ac) {
       if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
           if (ac.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
               ac.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0);
               return false;
           } else {
               return true;
           }
       } else {
           return true;
       }
    }


public  void freeAllAppsCache(Handler handler) throws Exception {
    Context context = App.Companion.getInstance().getApplicationContext();
    File externalDir = context.getExternalCacheDir();
    if (externalDir != null) {
        PackageManager pm = context.getPackageManager();
        for (ApplicationInfo info : pm.getInstalledApplications(256)) {
            File externalCache = new File( externalDir.getAbsolutePath().replace(context.getPackageName(), info.packageName));
            if (externalCache.exists() && externalCache.isDirectory()) {
                try {
                    deleteFile(externalCache);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
       ...
}

public boolean deleteFile(File file) throws Exception {
    if (file.isDirectory()) {
        for (String name : file.list()) {
            if (!deleteFile(new File(file, name))) {
                return false;
            }
        }
    }
    return file.delete();
}
}

вызываются класс одинаково и в java (и эквивалентно в котлине)

Java------

if(ShinimaHuynya.getInstance().requestPermission(this))
        ShinimaHuynya.getInstance().freeAllAppsCache(null)

kotlin----

if(ShinimaHuynya.getInstance().requestPermission(this))
        ShinimaHuynya.getInstance().freeAllAppsCache(null)

при запуске выдаются пермишины но проблема в том что функция deleteFile в java работает отлично а в котлине выдает ошибку Attempt to get length of null array

в
for (String name : file.list())

в чем проблема понять не могу приложения эквиваленты проверял на Api 29


Ответы (0 шт):