0

我在网上搜寻了一个解决方案,最后我不得不抓住最后一次机会。我知道关于这个问题有很多争论,但如果我在这里,那是因为我还没有答案。问题很清楚,但大多数建议的解决方案都不起作用。

               <uses-permission 
               android:name="android.permission.READ_EXTERNAL_STORAGE"/>
              <uses-permission 
               android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
              <uses-permission 
              android:name="android.permission.READ_INTERNAL_STORAGE" />
               android:requestLegacyExternalStorage="true">

我已经更改了版本

                flutter.minSdkVersion=21
               flutter.targetSdkVersion=29
               flutter.compileSdkVersion=29

这是代码。

         bool loading = false;
      List<String> _exPath = [];
      List<File> _exfilePath = [];

    bool permissionGranted = false;

    @override
    void initState() {
    _getStoragePermission();
     refresh();
      super.initState();
    }

       refresh() {
      loading = true;
     getPath();
     loading = false;
   }

    Future<void> getPath() async {
   List<String> paths;
   List<File> filePath = [];
   List<FileSystemEntity> filesys = [];
// getExternalStorageDirectories() will return list containing 
    internal storage directory path

     paths = await 
   ExternalPath.getExternalStorageDirectories();

   for (String fileString in paths) {
    Directory dir = Directory(fileString);
    List<FileSystemEntity> files = dir.listSync(recursive: true);
      filesys = files;
    }
      for (FileSystemEntity file in filesys) {
      FileStat f = file.statSync();
      if (f.type == FileSystemEntityType.file && 
      file.path.contains('.pdf')) {
      File g = File(file.path);
     paths.add(basename(file.path));
     filePath.add(g);
       }
     }
       setState(() {
        _exPath = paths;
        _exfilePath = filePath;
      });
     }

  Future _getStoragePermission() async {
   if (await Permission.storage.request().isGranted) {
    setState(() {
    permissionGranted = true;
   });
     } else if (await 
    Permission.storage.request().isPermanentlyDenied) {
  await openAppSettings();
    } else if (await Permission.storage.request().isDenied) {
    setState(() {
    permissionGranted = false;
       });
      }
   }

    @override
    Widget build(BuildContext context) {
     print(_exfilePath);

我无法访问外部存储 [/storage/B3AE-4D28] 但我可以访问 [/storage/emulated/0]

4

0 回答 0