如何获取(绝对)下载文件夹的路径?

时间:2018-08-09 21:37:31

标签: dart flutter

在Flutter项目中,如何获取Android设备中“下载”文件夹的(绝对)路径? 我的下载文件夹紧随其后:警报,Android,数据,DCIM,文档,电影,音乐,通知,图片,...

设备:GALAXY S8 + SM-G955F。 Android 8.0。不扎根。 Flutter beta v0.5.1。 Dart 2.0.0-dev.58.0。 Windows 10

File manager showing my Download folder


使用此软件包path_provider,我得到了以下3条路径:

/data/user/0/com.exemple.fonzo/cache
/data/user/0/com.exemple.fonzo/app_flutter
/storage/emulated/0

我无法从无根设备GALAXY S8 + SM-G955F上的Solid-Explorer文件管理器中找到或访问这3个文件夹。 Android 8.0。我只想找到该文件夹​​的绝对路径(如下载):

  • 我可以使用我的Android文件管理器应用程序进行访问。
  • 我可以从flutter项目的该文件夹中写入文件。

仍在等待答案。预先感谢。

5 个答案:

答案 0 :(得分:1)

您可以使用downloads_path_provider软件包。您将<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />添加到您的AndroidManifest.xml中。另外,如果您打算写入该文件夹并希望您的应用程序适用于Android版本> 6,则必须征求用户的写入许可。您可以使用https://pub.dev/packages/permission_handler来做到这一点。 await PermissionHandler().requestPermissions([PermissionGroup.storage]);

答案 1 :(得分:1)

我使用这个库在Android中获取公共下载目录

ext_storage

String _getPathToDownload() async {
    return ExtStorage.getExternalStoragePublicDirectory(ExtStorage.DIRECTORY_DOWNLOADS);  print(path);  // /storage/emulated/0/Download
}

答案 2 :(得分:0)

您应该使用本机功能。

path_provider软件包提供了访问电话目录的时间。

使用它,您可以访问:临时目录,应用程序目录,外部存储。

文档:Issue with JSON null handling in Newtonsoft

答案 3 :(得分:0)

将功能getApplicationDocumentsDirectory()更改为getExternalStorageDirectory(),它将显示应用程序的外部目录。

答案 4 :(得分:0)

在Flutter中

https://pub.dev/packages/ext_storage

安装 在项目pubspeck.yaml中将ext_storage添加为临时对象。

dependencies:
  ext_storage:

用法 首先,编写导入ext_storage包。

import 'package:ext_storage/ext_storage.dart';
    void dirpath() async {
      var path = await ExtStorage.getExternalStoragePublicDirectory(ExtStorage.DIRECTORY_DOWNLOADS);
    }