Как получить доступ к файлам, созданным другими приложениями и помещенным во внешнее и внутреннее хранилище, с помощью класса File в Android Studio - PullRequest
0 голосов
/ 02 августа 2020

Я программирую фотогалерею с помощью Android Studio, я оставил проект незавершенным, но смог получить доступ ко всем внутренним и внешним файлам. Сначала я запросил разрешения, затем выполнил несколько функций для фильтрации файлов, чтобы получить только изображения. Теперь по какой-то причине я не могу читать все папки, которые хочу отслеживать, например DCIM или Загрузки, и этого со мной раньше не случалось (почти 6 месяцев go). Я не знаю, из-за новой версии Android Studio или из-за того, что способ, которым я это сделал, больше не доступен. У меня есть документация в Android Developers, и я обнаружил, что каждое из следующих условий должно выполняться для доступа к файлам, созданным другими приложениями: вашему приложению было предоставлено разрешение READ_EXTERNAL_STORAGE. (Я сделал это) Файлы находятся в одной из следующих четко определенных коллекций мультимедиа: MediaStore.Images, MediaStore.Video, MediaStore.Audio. (Я не знал, что было что-то подобное) Я не знаю, правильный ли это способ сделать то, что я хочу делать сейчас ...

Я собираюсь оставьте ниже функцию, которую я сделал, чтобы найти DCIM, Загрузки и другие папки ...

    //it searchs for a directory with the given name in the directory source
private File findDirectory(String directoryName, File directorySource) {
    File[] files = directorySource.listFiles();
    if (files != null) {
        File aux;
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
                if(files[i].getName().equals(directoryName)){
                    return files[i];
                }
                aux = findDirectory(directoryName, files[i]); // deep searching
                if(aux != null){
                    return aux;
                }
            }
        }
    }
    return null; // the directory is not on the storage
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...