Java 为什么getUriForDownloadedFile()返回null

Java 为什么getUriForDownloadedFile()返回null,java,android,android-download-manager,Java,Android,Android Download Manager,我正在通过DownloadManager(API 28)下载图片。 图片已成功下载并显示在ImageView中。 我想知道文件名。但是getUriForDownloadedFile()返回null。 为什么? 排队后,下载是一个asyn操作,uri可能会在下载完成后分配,您需要监听接收者并传递id以获取uri排队后,下载是一个asyn操作,uri可能会在下载完成后分配,你需要听你的听筒,传递身份证才能拿到电话。非常感谢你,你帮了我很多!我忘记了多线程。如何为下载添加侦听器已完成? private

我正在通过DownloadManager(API 28)下载图片。 图片已成功下载并显示在ImageView中。 我想知道文件名。但是getUriForDownloadedFile()返回null。 为什么?


排队后,下载是一个asyn操作,uri可能会在下载完成后分配,您需要监听接收者并传递id以获取uri

排队后,下载是一个asyn操作,uri可能会在下载完成后分配,你需要听你的听筒,传递身份证才能拿到电话。非常感谢你,你帮了我很多!我忘记了多线程。如何为下载添加侦听器已完成?
private void dowloadfile() {
    Uri uri = Uri.parse(editText.getText().toString());
    DownloadManager.Request request = new DownloadManager.Request(uri);
    request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
    request.setAllowedOverRoaming(false);
    request.setVisibleInDownloadsUi(true);
    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "picture." + extension);

    registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

    refid = downloadManager.enqueue(request);
    Uri u = downloadManager.getUriForDownloadedFile(refid);
}