Flutter Path_provider 的 getExternalStorageDirectory() 返回 '/storage/emulated/0/Android/data/com.example.myApp/files',但它不是外部目录

问题描述 投票:0回答:1

Android 上的 Path_provider 的 getExternalStorageDirectory() 返回 '/storage/emulated/0/Android/data/com.example.myApp/files',但它不是外部目录。它应该返回类似“/storage/emulated/0/”的内容。

如何在不硬编码的情况下获得这个目录?(因为不同的手机会有不同的目录)

我尝试添加

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

但无论如何它返回应用程序的目录,而不是手机的

android flutter storage android-external-storage path-provider
1个回答
0
投票

由于最近版本中 Android 存储处理的变化,getExternalStorageDirectory() 返回的目录路径可能不会直接指向外部存储目录的根目录。

要访问外部存储目录的根目录而不硬编码路径,可以使用 android.os.Environment 类来获取外部存储目录。

试试这个:

import 'dart:io';
import 'package:path_provider/path_provider.dart';

Future<String> getExternalStorageDirectory() async {
  if (Platform.isAndroid) {
    Directory? directory = await getExternalStorageDirectory();
    if (directory != null) {
      return directory.parent!.path; // Parent directory should be the root of external storage
    }
  }
  return '';
}

参考

用于阅读

© www.soinside.com 2019 - 2024. All rights reserved.