Как открыть диалог сохранения файла в Android? - PullRequest
2 голосов
/ 21 декабря 2011

У меня есть веб-сервис, который дает мне массив байтов [] в соответствии с идентификатором изображения.Я хочу преобразовать эти байты [] в файл и сохранить файл на Android, где пользователь хочет, как диалоговое окно сохранения файла с файлом точно такого же формата, как у него.

Ответы [ 3 ]

4 голосов
/ 21 декабря 2011

Android SDK не предоставляет свой собственный диалог с файлами, поэтому вам нужно создать свой собственный.

3 голосов
/ 28 октября 2018

Так как это лучший результат в Google при поиске по этой теме, и это меня сильно смутило, когда я его исследовал, я подумал, что добавлю обновление к этому вопросу. Начиная с Android 19 есть встроенный диалог сохранения. Вам не нужно никакого разрешения для этого (даже WRITE_EXTERNAL_STORAGE). Как это работает, довольно просто:

//send an ACTION_CREATE_DOCUMENT intent to the system. It will open a dialog where the user can choose a location and a filename

Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("YOUR FILETYPE"); //not needed, but maybe usefull
intent.putExtra(Intent.EXTRA_TITLE, "YOUR FILENAME"); //not needed, but maybe usefull
startActivityForResult(intent, SOME_INTEGER);

...

//after the user has selected a location you get an uri where you can write your data to:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  if(requestCode == SOME_INTEGER && resultCode == Activity.RESULT_OK) {
    Uri uri = data.getData();

    //just as an example, I am writing a String to the Uri I received from the user:

    try {
      OutputStream output = getContext().getContentResolver().openOutputStream(uri);

      output.write(SOME_CONTENT.getBytes());
      output.flush();
      output.close();
    }
    catch(IOException e) {
      Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show();
    }
  }
}

Подробнее здесь: https://developer.android.com/guide/topics/providers/document-provider

3 голосов
/ 21 декабря 2011

Вы не можете создать диалоговое окно сохранения файла, но вы можете сохранить файлы из вашего приложения на SD-карту Android с помощью ссылок ниже

http://android -er.blogspot.com / 2010/07 / save-file-to-sd-card.html

http://www.blackmoonit.com/android/filebrowser/intents#intent.pick_file.new

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...