2016-11-30 2 views
1

У меня проблемы с чтением URL-адреса пути с моей SD-карты.Каталог камер null

Он всегда возвращает эту ошибку: Попытка получить длину нулевого массива: Попытка получить длину нулевого массива

Просмотр изображений на моем телефоне я получаю этот каталог в качестве каталога Фотопленка:

/storage/emulated/0/DCIM/Camera/imageName 

я положил в моем манифесте права доступа к файлам:

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

Это мой код:

public void processImages() { 
    listOfImages = new ArrayList<>(); 

    Boolean isSDPresent = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); 

    if (isSDPresent) { 


//returns same path - /storage/emulated/0/DCIM/Camera/ 
     String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath()+"/Camera/"; 
     File f = new File(path); 

     listOfImages = scanPhotos(f); 

    } else { 
     Toast.makeText(this, "sd not present", Toast.LENGTH_SHORT).show(); 
    } 
} 

public List<File> scanPhotos(File directory) { 
    List<File> listOfPictures = new ArrayList<>(); 

//this returns null 
     File[] files = directory.listFiles(); 
     for (File file : files 
       ) { 
      if (file.isDirectory() && !file.isHidden()) { 
       listOfPictures.addAll(scanPhotos(file)); 
      } else { 
       if (file.getName().endsWith(".jpg") || file.getName().endsWith(".jpeg") || file.getName().endsWith(".png")) { 
        listOfPictures.add(file); 
       } 
      } 
     } 

    return listOfPictures; 
} 

Ведение

f.canRead() - returns false 
+3

Вы проверили разрешения Runtime? – Rahul

+0

Это решило мою проблему. Я полностью забыл об этих разрешениях Зефира. большое спасибо – hyrulelink16

ответ

1

проводки мой комментарий как ответ. От marshmallow и далее вам необходимо предоставить время работы permissions.

Существует обратный вызов

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {} 

рассказывающие разрешение предоставляется пользователем или нет.

Для добавления разрешения на использование используйте этот tutorial.

Смежные вопросы