Скачать файл по прямой ссылке

632
12 июня 2017, 20:42

В android приложении по нажатию на кнопку должна начаться загрузка файла по прямой ссылке на загрузку файла( при открытии сразу предлагает сохранить файл). Проблема такая, нашёл в интернете множество вариантов загрузки файла(пример ниже), по нажатию, пишет либо (Read-only file system) либо происходит псевдо загрузка которая ничего не сохраняет. Игрался с <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> и <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> снова таки ни особо помогает. Нужно что бы произошла типичная загрузка и в верхнем левом углу появилась стрелка загрузки как это обычно бывает при загрузке.

 public void DownloadFromUrl(String imageURL, String fileName) {  //this is the downloader method
    try {
        URL url = new URL(imageURL); //you can write here any link
        File file = new File(ctx.getFilesDir().getPath().toString(),fileName);
        long startTime = System.currentTimeMillis();
        Log.d("ImageManager", "download begining");
        Log.d("ImageManager", "download url:" + url);
        Log.d("ImageManager", "downloaded file name:" + fileName);
                    /* Open a connection to that URL. */
        URLConnection ucon = url.openConnection();
                    /*
                     * Define InputStreams to read from the URLConnection.
                     */
            InputStream is = ucon.getInputStream();

                    /*
                     * Read bytes to the Buffer until there is nothing more to read(-1).
                     */
            BufferedInputStream bis = new BufferedInputStream(is);
            ByteArrayOutputStream buffer = new ByteArrayOutputStream();
            //We create an array of bytes
            byte[] data = new byte[50];
            int current = 0;
            while ((current = bis.read(data, 0, data.length)) != -1) {
                buffer.write(data, 0, current);
            }
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(buffer.toByteArray());
            fos.close();
            Log.d("ImageManager", "download ready in"
                    + ((System.currentTimeMillis() - startTime) / 1000)
                    + " sec");

    } catch (IOException e) {
        Log.d("ImageManager", "Error: " + e);
    }
}
READ ALSO
Jenkins+(nexus\maven) через SSL

Jenkins+(nexus\maven) через SSL

Доброго времени сутокЕсть несколько Docker контейнеров с Jenkins, Nexus и Maven

257
Как ListIterator может участвовать во вставке элементов?

Как ListIterator может участвовать во вставке элементов?

Задание (part11task14) из книги "Talking in Java" B

289
Кроссбраузерность. Отступы для Mozilla Firefox

Кроссбраузерность. Отступы для Mozilla Firefox

ПриветствуюПомогите пожалуйста

274
Не функционирует компонент Bootstrap

Не функционирует компонент Bootstrap

Только изучаю библиотеку: просто взял код компонента Dropdown menu и хотел поэкспериментировать

237