Android 使用cordova文件插件访问所有电话文件
我正在开发一款Ionic 5+Angular应用程序,使用这个cordova插件读取手机文件时遇到了一些麻烦 我找到的所有信息都是关于属于我们所处的特定应用程序的文件。我需要做的是从手机中查找并读取(而不是写入!)任何文件。。。。像图片、视频、音频文件、文档、下载等。我需要在Android和iPhone上实现这一点,我知道每一个都有不同的文件系统和不同的组织 我开始使用Android,但无法访问手机文件系统的主根文件夹,然后迭代文件夹以递归方式读取文件/文件夹 我怎样才能做到这一点?我的listDir方法应该指向哪里?我始终会收到一个空数组作为响应,除非为基本corodova.file.dataDirectory(=file:///data/user/0/com.id.myApp/files/)其中我有一个空文档文件夹(我想默认情况下自动生成) 这是我的自动取款机代码 注意:在listDir之前,我确保我有权访问电话文件。。。只有在授予权限时,我才尝试列出文件/目录Android 使用cordova文件插件访问所有电话文件,android,ios,angular,cordova,ionic-framework,Android,Ios,Angular,Cordova,Ionic Framework,我正在开发一款Ionic 5+Angular应用程序,使用这个cordova插件读取手机文件时遇到了一些麻烦 我找到的所有信息都是关于属于我们所处的特定应用程序的文件。我需要做的是从手机中查找并读取(而不是写入!)任何文件。。。。像图片、视频、音频文件、文档、下载等。我需要在Android和iPhone上实现这一点,我知道每一个都有不同的文件系统和不同的组织 我开始使用Android,但无法访问手机文件系统的主根文件夹,然后迭代文件夹以递归方式读取文件/文件夹 我怎样才能做到这一点?我的list
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])
}
});
});
(