【问题标题】:Android ListFiles returns nullAndroid ListFiles 返回 null
【发布时间】:2021-07-07 13:00:19
【问题描述】:

我正在使用 UnoPlatform 创建一个 Android 应用程序,我正在寻找已读取的目录和文件到外部 USB 记忆棒中。 这是我正在使用的代码,但经过多次尝试后,此链接

File exists and IS directory, but listFiles() returns null

我无法获取目录或文件,因为 ListFiles 方法总是返回 null

        var extDirs = Context.GetExternalFilesDirs("");
        if (extDirs != null && extDirs.Count() > 0)
        {
            foreach (var extDir in extDirs)
            {
                var directories = extDir.ListFiles();
                ...

Read_External_Storage 和 Write_External_Storage 被检查并

       extDir.CanRead() = True
       extDir.IsDirectory = True
       extDir.AbsolutePath = "/storage/5CD7-B286/Android/data/UnoPlatform.UnoPlatform/files"

这是我的 AndroidManifest

<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_PHONE_STATE" />
<application android:requestLegacyExternalStorage="true" 

有人可以帮助我吗?

【问题讨论】:

  • 我正在使用 Android 10.0 在三星 Galaxy A7 中测试该应用
  • 您是如何获得该路径的?通过 GetExternalFilesDirs() ?通常无法使用经典文件系统路径访问 USB OTG 驱动器,而只能使用 SAF。如果 UnoPlatform.UnoPlatform 确实是您的应用特定路径,则您根本不需要权限。
  • @blackapps 是的 UnoPlatform.UnoPlatform 是我的应用程序的名称。我获得路径 Android.App.Application.Context.GetExternalFilesDirs("")
  • 如果没有要列出的文件,您应该得到一个空数组而不是 null。但是谁知道...里面有文件吗?
  • 是的,充满了目录和文件

标签: c# android android-external-storage uno-platform


【解决方案1】:

这是我的错,因为 Android 在外部 USB 记忆棒中创建了一个新文件夹路径,如下所示:

/Android/data/UnoPlatform.UnoPlatform/files

当我请求 GetExternalFilesDirs("") 时,它返回 null,因为“files”文件夹为空。

所以我浏览了父文件夹,直到找到“存储”文件夹作为父文件夹,然后我显示它。

我认为这不是最佳做法,但目前这是我业务的最佳解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多