Разрешить пользователю выбирать путь для сохранения файла в Android

Я разрабатываю одно приложение для нашего клиента, и есть одна небольшая функциональность, в которой мы застряли, поэтому нужна ваша помощь,

Сценарий: мы разработали одно представление корзины, из которого пользователи могут видеть список изображений, песен и видео по категориям, теперь у пользователя есть один вариант просмотра или прослушивания изображений, аудио или видео, а также это еще один вариант скачать его.

Нужна помощь @ Мы сделали это с помощью одного статического пути, по которому пользователь может сохранять все файлы, но наш клиент хочет разрешить пользователям выбирать путь для сохранения файлов, и для этого нам нужен файловый диалог, из которого пользователь может выбрать место расположения.

Примечание: ребята, обратите внимание, что мы сделали это для одного статического пути, и он работает превосходно, также мы сохраняем этот путь в локальной базе данных, чтобы мы могли использовать его позже, так что теперь просто оставайтесь как мы можем разрешить пользователю выбирать место для сохранения файла?


person Vickyexpert    schedule 13.09.2016    source источник
comment
Опубликованное сообщение: stackoverflow.com/questions/7856959/android-file-chooser   -  person user3161880    schedule 13.09.2016
comment
Я уже проверил это, но это селектор файлов, а не селектор местоположения, мне не нужно выбирать файл, мне нужно выбрать место, где файл может быть сохранен   -  person Vickyexpert    schedule 13.09.2016
comment
Хороший вопрос. Насколько мне известно, вам нужно искать список папок в определенном хранилище (внутреннем/внешнем). Затем при выборе этой папки вам нужно снова перечислить в ней папки. Вы можете сделать так. Я нашел пример для вас, но не уверен, что он будет работать или нет. developer.samsung.com/technical-doc/   -  person Shabbir Dhangot    schedule 13.09.2016
comment
@ShabbirDhangot спасибо, в настоящее время я ищу только это, даже я думаю использовать проводник, где я могу применить некоторую логику, чтобы выбрать только папку вместо файла, также позвольте мне проверить вашу ссылку   -  person Vickyexpert    schedule 13.09.2016
comment
я тоже недавно стал фотографом :D поэтому, используя параметры локальной сети, я передаю GIG изображений на свое мобильное устройство, а когда я иду на работу, проверяю и делюсь ими в instagram, недавно я обнаружил необходимость массовое изменение изображений с таким количеством поисков и проб и ошибок за несколько дней, что заняло бы всего 2 часа без исследования приложения .net win, я написал, выбирая документ, загружая все файлы, изменяя файлы, но я не мог найти способ чтобы сохранить файл, а также все ресурсы о преобразовании uri в абсолютный проход для всех платформ, мне не удалось, мне интересно, сколько приложений все еще работает   -  person deadManN    schedule 23.07.2018
comment
.... остальное, поэтому я не могу позволить изображению храниться там, где они хотят, мне нужно классифицировать их в разных местах, поэтому я удаляю их, не затрагивая другие изображения, называя папку, чтобы я знал, какой тег применяется без прохождение процесса поиска и открытия информации EXIF ​​исходного файла, преодоление ограничения хранилища и многих других причин, по которым каталог должен быть доступен для выбора, и в какой-то момент, возможно, пользователь создаст папку в другой папке, для некоторых других потребностей пользователя, которые я не принял во внимание... в текущей системе хранения файлов Android отсутствует такое понимание...   -  person deadManN    schedule 23.07.2018


Ответы (1)


Я думаю, что Android DirectoryChooser поможет вам выбрать каталог для сохранения файла.

Манифест

Вам нужно объявить DirectoryChooserActivity и запросить разрешение android.permission.WRITE_EXTERNAL_STORAGE.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...
<application>
    <activity android:name="net.rdrei.android.dirchooser.DirectoryChooserActivity" />
</application>

Активность

Чтобы выбрать каталог, запустите действие из логики вашего приложения:

 final Intent chooserIntent = new Intent(this, DirectoryChooserActivity.class);

    final DirectoryChooserConfig config = DirectoryChooserConfig.builder()
            .newDirectoryName("DirChooserSample")
            .allowReadOnlyDirectory(true)
            .allowNewDirectoryNameModification(true)
            .build();

    chooserIntent.putExtra(DirectoryChooserActivity.EXTRA_CONFIG, config);

// REQUEST_DIRECTORY is a constant integer to identify the request, e.g. 0
startActivityForResult(chooserIntent, REQUEST_DIRECTORY);

Обработайте результат в методе onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == REQUEST_DIRECTORY) {
        if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) {
            handleDirectoryChoice(data
                .getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR));
        } else {
            // Nothing selected
        }
    }
}
person prakash ubhadiya    schedule 13.09.2016
comment
Хорошо знать. Мне это тоже поможет. Спасибо, что поделились - person Shabbir Dhangot; 13.09.2016
comment
Спасибо за помощь, мне потребовалось внести некоторые изменения по мере необходимости, но тогда это работает ... - person Vickyexpert; 15.09.2016
comment
как запросить создание нового файла в выбранном каталоге? - person deadManN; 23.07.2018