Android 使用cordova文件插件访问所有电话文件

Android 使用cordova文件插件访问所有电话文件,android,ios,angular,cordova,ionic-framework,Android,Ios,Angular,Cordova,Ionic Framework,我正在开发一款Ionic 5+Angular应用程序,使用这个cordova插件读取手机文件时遇到了一些麻烦 我找到的所有信息都是关于属于我们所处的特定应用程序的文件。我需要做的是从手机中查找并读取(而不是写入!)任何文件。。。。像图片、视频、音频文件、文档、下载等。我需要在Android和iPhone上实现这一点,我知道每一个都有不同的文件系统和不同的组织 我开始使用Android,但无法访问手机文件系统的主根文件夹,然后迭代文件夹以递归方式读取文件/文件夹 我怎样才能做到这一点?我的list

我正在开发一款Ionic 5+Angular应用程序,使用这个cordova插件读取手机文件时遇到了一些麻烦

我找到的所有信息都是关于属于我们所处的特定应用程序的文件。我需要做的是从手机中查找并读取(而不是写入!)任何文件。。。。像图片、视频、音频文件、文档、下载等。我需要在Android和iPhone上实现这一点,我知道每一个都有不同的文件系统和不同的组织

我开始使用Android,但无法访问手机文件系统的主根文件夹,然后迭代文件夹以递归方式读取文件/文件夹

我怎样才能做到这一点?我的listDir方法应该指向哪里?我始终会收到一个空数组作为响应,除非为基本corodova.file.dataDirectory(=file:///data/user/0/com.id.myApp/files/)其中我有一个空文档文件夹(我想默认情况下自动生成) 这是我的自动取款机代码

注意:在listDir之前,我确保我有权访问电话文件。。。只有在授予权限时,我才尝试列出文件/目录

import { Injectable } from '@angular/core';
import { File } from '@ionic-native/file/ngx';

@Injectable({ providedIn: 'root' })
export class FileService {

    constructor(private file: File) {
    }

    public getAllFiles() {
        // tried this with several base paths

        // file.externalDataDirectory constant
        // file.externalApplicationStorageDirectory constant
        // file.externalRootDirectory constant
        // 'file:///storage/emulated/0/' as plain string
        // ''  as plain string

        this.file.listDir(this.file.dataDirectory, '').then((files) => {
            console.log('read in ', this.file.dataDirectory, ' found: ', files);
        });
    }
}
我希望收到一个包含以下文件夹/文件的数组

有人能帮上忙吗

编辑:也尝试使用“requestFileSystem”和“resolveLocalFileSystemURL”,但没有成功。。。我总是得到一个DirectoryEntry,它似乎指向根路径,但是我总是得到一个空数组作为它的条目

        (<any>window).requestFileSystem(1, 0,
            (fileSystem) => {
                if (fileSystem && fileSystem.root) {
                    const root: DirectoryEntry = fileSystem.root;
                    const rootReader = root.createReader();
                    rootReader.readEntries((entries) => {
                        for (let i = 0; i < entries.length; i++) {
                    console.log('check sistem entry... ', entries[0])
                        }
                    });
                }
            }, (error) => {
                console.log('error file sistem... ', error)
            });

        (<any>window).resolveLocalFileSystemURL(this.file.externalRootDirectory, (fileSystem: DirectoryEntry) => {
            const rootReader = fileSystem.createReader();
            rootReader.readEntries((entries) => {
                for (let i = 0; i < entries.length; i++) {
                    console.log('check sistem entry... ', entries[0])
                }
            });
        });

        (<any>window).resolveLocalFileSystemURL('file:///storage/emulated/0/', (fileSystem: DirectoryEntry) => {
            const rootReader = fileSystem.createReader();
            rootReader.readEntries((entries) => {
                for (let i = 0; i < entries.length; i++) {
                    console.log('check sistem entry... ', entries[0])
                }
            });
        });

        (<any>window).resolveLocalFileSystemURL('cdvfile://localhost/', (fileSystem: DirectoryEntry) => {
            const rootReader = fileSystem.createReader();
            rootReader.readEntries((entries) => {
                for (let i = 0; i < entries.length; i++) {
                    console.log('check sistem entry... ', entries[0])
                }
            });
        });

        (<any>window).resolveLocalFileSystemURL('file:///', (fileSystem: DirectoryEntry) => {
            const rootReader = fileSystem.createReader();
            rootReader.readEntries((entries) => {
                for (let i = 0; i < entries.length; i++) {
                    console.log('check sistem entry... ', entries[0])
                }
            });
        });
(