【问题标题】:Opening files downloaded by DownloadManager causes "The document path is not valid" error打开 DownloadManager 下载的文件会导致“文档路径无效”错误
【发布时间】:2015-04-23 04:18:49
【问题描述】:

我正在尝试打开由 DownloadManager 下载的 pdf 文件,但在装有 Android 4.1.2 的三星 Galaxy S3 上时常出现“文档路径无效”

意图:

Intent openIntent = new Intent(Intent.ACTION_VIEW);
openIntent.setDataAndType(downloadManager.getUriForDownloadedFile(lastDownloadId), "application/pdf");
startActivity(openIntent);

权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

下载管理器:

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdirs(); 

DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); 
long lastDownloadId = downloadManager.enqueue(new DownloadManager.Request(uri)
    .setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
    .setAllowedOverRoaming(false)
    .setTitle(title)
    .setDescription(description)
    .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "myfile.pdf"));

我做错了什么?

编辑: 有时我会得到这个:

COLUMN_ID: 108 
COLUMN_BYTES_DOWNLOADED_SO_FAR: 33085
COLUMN_LAST_MODIFIED_TIMESTAMP: 1397152425941 
COLUMN_LOCAL_URI: null
COLUMN_STATUS: 16 COLUMN_REASON: 1008

为什么?

【问题讨论】:

  • getUriForDownloadedFile() 返回什么值?
  • @CommonsWare - 有时它返回 null。为什么?我编辑了我的答案。

标签: android android-download-manager


【解决方案1】:

状态为 16 为STATUS_FAILED,表示下载失败。 1008 的原因是ERROR_CANNOT_RESUME,我不知道这在现实世界中意味着什么。但是,您的文件没有下载,因此您没有Uri

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    相关资源
    最近更新 更多