Android 如何使用PRDownloader库下载文件

Android 如何使用PRDownloader库下载文件,android,download,android-library,Android,Download,Android Library,我想使用PRDownloader库下载文件,但我有两个方程 首先:如何使用库下载文件 第二:我必须在字符串dirPath中输入什么 我的主要活动 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我想使用PRDownloader库下载文件,但我有两个方程

首先:如何使用库下载文件

第二:我必须在
字符串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);

    }




}

目录路径是您要在设备上写入文件的位置(如您要下载文件的位置)。
它可以是
context.getFilesDir().toString()
,这提供了本地文件的路径

下载文件时,将调用
ondownloadplete()
,然后您可以访问文件 如下所示:
urifileuri=FileProvider.getUriForFile(这个,权限,新文件(getFilesDir()+“/”+filename))

除非您不创建文件提供程序,否则此将不起作用。这就像未经许可不能使用设备存储,因此必须创建提供程序。 这是一个很好的参考:

祝你好运。

以下是如何使用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()
将文件存储在外部存储器上

您不需要任何特殊权限来存储到内部存储器,但是用户将无法访问数据。如果用户删除应用程序,它也将被删除


如果存储在外部存储器上,则需要向用户请求权限。他将能够看到文件(例如,使用文件浏览器)。

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) {

            }


        });
运行上面的代码将开始下载


最后使用
downloadd
暂停、恢复或取消特殊下载案例

他们应该提供一种方法来访问'prdownloader.db'数据库,或者在关闭应用程序后调用它来自动恢复下载。{“connectionException”:{“detailMessage”:“意外的流结束”,“stackTrace”:[],“suppressedExceptions”:[]},“isConnectionError”:true,“isServerError”:false,“responseCode”:0}对于较大的文件,此问题经常出现,甚至连internet都有正确的连接。您是否遇到过此问题?Sathish Gadde:我建议您与开发人员联系,或在项目页面上打开一个问题。