代码之家  ›  专栏  ›  技术社区  ›  user3523426

Cordova插件后台下载失败

  •  0
  • user3523426  · 技术社区  · 3 年前

    我需要使用我的Cordova应用程序下载巨大的文件(160GB)。由于文件传输插件被弃用,并且建议XMLHTTPRequest的使用会因巨大故障而失败,我从下载了cordova插件后台下载 https://github.com/sgrebnov/cordova-plugin-background-download 。它适用于任何iOS设备,但在Android 13上总是会出现错误而失败

    Unsupported path /storage/emulated/0/ ......
    

    错误是当临时文件被装入板条箱时。我想问题出在这个代码上:

    this.setTempFileUri(Uri.fromFile(new File(android.os.Environment.getExternalStorageDirectory().getPath(),
                    Uri.parse(targetFileUri).getLastPathSegment() + "." + System.currentTimeMillis())).toString());
    

    哪里

    android.os.Environment.getExternalStorageDirectory().getPath()
    

    返回无效路径。

    有没有一个变通办法,如何使插件在Android 13上工作?我使用了Github上插件主页上的示例代码。

    0 回复  |  直到 3 年前
        1
  •  0
  •   user3523426    3 年前

    src/android/BackgroundDownload.java文件的第114行需要进行修改,以获得正确的功能

    this.setTempFileUri(Uri.fromFile(new File(android.os.Environment.getExternalStorageDirectory().getPath(),
    Uri.parse(targetFileUri).getLastPathSegment() + "." + System.currentTimeMillis())).toString());
    

    this.setTempFileUri(Uri.fromFile(new File(android.os.Environment.getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_DOWNLOADS),
    Uri.parse(targetFileUri).getLastPathSegment() + "." + System.currentTimeMillis())).toString());