簡體   English   中英

使用 flutter 下載器 package 下載總是失敗

[英]Downloading failed always using flutter downloader package

我嘗試使用 flutter 下載器 ZEFE90A8E604A7C840E88D03A6BD8ZF6 從 firebase 存儲下載 pdf 文件。 但是下載總是顯示失敗,不知道是什么原因。

這是我嘗試過的代碼。 請提出一些解決方案。在此先感謝。

void _startDownload(String link) async
{
   var dir = await getExternalStorageDirectory();
   try{
      final taskId = await FlutterDownloader.enqueue(
      url: link,
      savedDir:  dir.path,
      fileName:"sampe.docx",
      showNotification: true, // show download progress in status bar(forAndroid)
      openFileFromNotification: true, // click on notification to open downloaded file (for Android)
      );
      debugPrint(taskId);

   //   FlutterDownloader.retry(taskId: taskId);
  }
  catch(e){
     print(e);
  }
}

這是我收到的錯誤。

W/System.err(18012): java.io.FileNotFoundException: /storage/emulated/0/sampe.docx (Permission denied)
W/System.err(18012):    at java.io.FileOutputStream.open(Native Method)
W/System.err(18012):    at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
W/System.err(18012):    at java.io.FileOutputStream.<init>(FileOutputStream.java:140)
W/System.err(18012):    at vn.hunghd.flutterdownloader.DownloadWorker.downloadFile(DownloadWorker.java:190)
W/System.err(18012):    at vn.hunghd.flutterdownloader.DownloadWorker.doWork(DownloadWorker.java:102)
W/System.err(18012):    at androidx.work.Worker$1.run(Worker.java:57)
W/System.err(18012):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
W/System.err(18012):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
W/System.err(18012):    at java.lang.Thread.run(Thread.java:760)
I/WorkerWrapper(18012): Worker result SUCCESS for Work [ id=b7676538-a655-454a-89e2-1899f0e078cd, tags={ vn.hunghd.flutterdownloader.DownloadWorker, flutter_download_task } ]

確保你有寫權限。 沒有讀、寫權限

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

嘗試將android:requestLegacyExternalStorage="true"android/app/src/main/AndroidManifest.xmlflutter_downloader提供程序,例如:

<provider
        android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
        android:authorities="im.mingguang.mingguang_app.flutter_downloader.provider"
        android:exported="false"
        android:grantUriPermissions="true"
        android:requestLegacyExternalStorage="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
</provider>
//Check permission first need check permission
  Future<bool> _checkPermission() async {
if (platform == TargetPlatform.android) {
  final status = await Permission.storage.status;
  if (status != PermissionStatus.granted) {
    final result = await Permission.storage.request();
    if (result == PermissionStatus.granted) {
      return true;
    }
  } else {
    return true;
  }
} else {
  return true;
}
return false;
}
// user_permission code for mainfest
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

確保您的文件名不同,因為相同的文件名不允許存儲

void download(String url) async {
    final status = await Permission.storage.request();

    if (status.isGranted) {
     

      final id = await FlutterDownloader.enqueue(
        url: url,
        savedDir: "/storage/emulated/0/Download",
        showNotification: true,
        openFileFromNotification: true,
  fileName: DateTime.now().millisecond.toString().replaceAll(" ", ""),

      ).then((value) {
        print("complated");
      });
    } else {
      setState(() {
       print("faild");
      });
      print('Permission Denied');
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM