как использовать библиотеку PRDownloader для загрузки файла - PullRequest
0 голосов
/ 18 мая 2018

Я хочу загрузить файл с помощью библиотеки PRDownloader, но у меня есть два уравнения:

первое: как использовать библиотеку для загрузки файла?...

секунда: что я должен вставить String dirPath? ....

Моя основная активность

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        PRDownloader.initialize(this);

        PRDownloaderConfig config = PRDownloaderConfig.newBuilder()
                .setDatabaseEnabled(true)
                .build();
        PRDownloader.initialize(getApplicationContext(), config);




        String url = "https://firebasestorage.googleapis.com/v0/b/mohammed-1f35b.appspot.com/o/fear-storynory-jana.mp3?alt=media&token=4d0fc7a3-2b95-4ddd-8ecc-c792a09ab539";
        String fileName ="myPhoto";
        String dirPath = "????????";

        int downloadId = PRDownloader.download(url, dirPath, fileName)
                .build()
                .setOnStartOrResumeListener(new OnStartOrResumeListener() {
                    @Override
                    public void onStartOrResume() {

                    }
                })
                .setOnPauseListener(new OnPauseListener() {
                    @Override
                    public void onPause() {

                    }
                })
                .setOnCancelListener(new OnCancelListener() {
                    @Override
                    public void onCancel() {

                    }
                })
                .setOnProgressListener(new OnProgressListener() {
                    @Override
                    public void onProgress(Progress progress) {

                    }
                })
                .start(new OnDownloadListener() {
                    @Override
                    public void onDownloadComplete() {

                    }

                    @Override
                    public void onError(Error error) {

                    }
                });


        PRDownloader.pause(downloadId);
        PRDownloader.cancel(downloadId);

    }




}

Ответы [ 4 ]

0 голосов
/ 18 августа 2019

dirPath - это путь к папке, в которую вы хотите сохранить загруженный файл

, например: "/sdcard/downloads"

, и вы можете использовать эту библиотеку, как показано ниже:

 downloadID = PRDownloader.download(url,path,"hellow.mp4")
        .build()
        .setOnStartOrResumeListener(new OnStartOrResumeListener() {
            @Override
            public void onStartOrResume() {

            }
        })
        .setOnPauseListener(new OnPauseListener() {
            @Override
            public void onPause() {

            }
        })
        .setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel() {

            }
        })
        .setOnProgressListener(new OnProgressListener() {
            @Override
            public void onProgress(Progress progress) {


            }
        })
        .start(new OnDownloadListener() {
            @Override
            public void onDownloadComplete() {

            }

            @Override
            public void onError(Error error) {

            }


        });

Запуск приведенного выше кода приведет к загрузке

И, наконец, используйте downloadId для приостановки, возобновления или отмены специального случая загрузки

0 голосов
/ 03 августа 2018

Путь Dir - это место, куда вы хотите записать файл на своем устройстве ( Как и то, где вы хотите его скачать * ).
Это может быть context.getFilesDir().toString(), это дает вам путь к вашим локальным файлам.

Когда он загружает файл, будет вызываться onDownloadComplete(), после чего вы сможете получить к нему доступ следующим образом:
Uri fileURI = FileProvider.getUriForFile(this, authorities, new File(getFilesDir() +"/" + filename));

Этот не будет работать, если вы не создаете File Provider .Вы не можете использовать хранилище устройства без разрешения, поэтому вам нужно создать провайдера .Это очень хорошая ссылка для этого: FileProvider .
Удачи.

0 голосов
/ 27 августа 2018

Ниже приведен пример загрузки с помощью PRDownloader:

private int downloadFile(url){

    String fileName = url.substring(url.lastIndexOf('/')+1);
    String dirPath = getFilesDir().getAbsolutePath()+File.separator+"downloads";
    //String dirPath = android.os.Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"downloads";

    return /*download id*/ PRDownloader.download(url, dirPath, fileName)
            .build()
            .start(new OnDownloadListener() {
                @Override
                public void onDownloadComplete() {
                    log("download complete!");
                }
                @Override
                public void onError(Error error) {
                    log("onError: " +error.toString());
                }
            });

}

fileName - это файл, который будет сохранен после загрузки.dirPath - это место, где он будет храниться.

Пример того, как его вызвать:

String url = "https://www.your-url.com/files/file.txt"
int downloadId = downloadFile(url);

Вы можете хранить файлы либо во внутренней памяти с getFilesDir(), либо на внешней памяти с getExternalStorageDirectory().

Вам не нужно никаких специальных разрешений для хранения во внутренней памяти, однако данные не будут доступны пользователю.Он также будет удален, если пользователь удалит приложение.

Если вы храните на внешнем хранилище, вам необходимо запросить разрешение у пользователя.Он сможет просматривать файлы (например, с помощью файлового браузера).

0 голосов
/ 18 мая 2018

Я также не знаю, как использовать эту библиотеку для загрузки, и не нашел учебника по использованию библиотек загрузки

...