在Delphi FireMonkey应用程序中探索iOS文件
我正在开发一个文档查看器,用于处理iOS的自定义文件类型。用户应该能够从应用程序内部打开文档,即使文件未保存在应用程序的本地目录中。在Delphi FireMonkey应用程序中探索iOS文件,ios,file,delphi,firemonkey,Ios,File,Delphi,Firemonkey,我正在开发一个文档查看器,用于处理iOS的自定义文件类型。用户应该能够从应用程序内部打开文档,即使文件未保存在应用程序的本地目录中。 有没有办法在我的应用程序中为我的用户提供类似文件浏览器的结构? 我已经尝试过的: 我的第一个猜测是使用System.IOUtils中的TPath和TDirectory创建我自己的资源管理器,并在给定路径上呈现所有文件和子目录的列表。 这已经在各自的Android应用程序中起作用了,我还让它只使用我的应用程序私有目录中的路径运行。 遗憾的是,TPath只提供了这些本
有没有办法在我的应用程序中为我的用户提供类似文件浏览器的结构?
我已经尝试过的:
我的第一个猜测是使用
System.IOUtils
中的TPath
和TDirectory
创建我自己的资源管理器,并在给定路径上呈现所有文件和子目录的列表。这已经在各自的Android应用程序中起作用了,我还让它只使用我的应用程序私有目录中的路径运行。
遗憾的是,
TPath
只提供了这些本地路径,我没有找到任何其他路径可以用来浏览设备上任何其他地方的文件。阅读Apple开发者文档时,我还发现我的问题可以通过使用
UIDocumentPickerViewController解决,但它没有在iOSAPI
中实现,是否有其他方法触发iOS显示
我正在使用以下版本:
德尔福10.4悉尼补丁3
平台助手服务器21.0
macOS Catalina 10.15.6
Xcode 11.7
配备iOS 13.7的iPhone 7已经在iOS上测试了您的FileSelector项目。它工作得很好,让我选择我选择的文件
我遇到的问题是当我试图打开所选文件或处理它时
我在SelectorCompleteHandler事件处理程序中添加了以下代码:
var
Sourcefile,DestFile: string;
fileman : NSFileManager;
begin
ListBox1.Clear;
ListBox1.Items.Add('W');
{$IF Defined(IOS)}
Sourcefile := FSelector.Files[I];
fileman := TNSFileManager.create;
Sourcefile := Sourcefile.Replace('file://','',[rfReplaceAll,rfIgnoreCase]);
DestFile := IncludeTrailingPathDelimiter(System.IOUtils.TPath.GetDocumentsPath)
+'New';
fileman.copyItemAtPath(NSStr(Sourcefile),NSStr(DestFile));
它仅适用于应用程序内部文件夹范围内的文档,但不适用于应用程序内部文件夹范围外的文档(文档、下载等)
我已对我的项目文件versioninfo设置了以下权限:UIFileShareingEnabled、LSSupportsOpeningDocumentsInPlace、NSAllowArbitraryLoads
我认为这肯定是一个权限问题,但我无法找到如何正确设置Delphi项目权限的信息,以便访问任何位置的任何文件,而不仅仅是我的内部应用程序文件夹
奇怪的是,我没有收到任何错误消息
copyItemAtPath语句
问候,,
Aldo Victoria我在Kastri库中实现了UIDocumentPickerViewController:。您将在Demos\FileSelector文件夹中找到一个演示。它使用Kastri中的单位,包括Features\FileSelector文件夹中的单位。很抱歉,到目前为止还没有这些特定部分的文档。谢谢,这正是我所需要的。自从在我的应用程序中运行UIDocumentPickerViewController以来,我遇到了完全相同的问题。虽然我同意这与权限有关,但我不认为这是可以通过设置常规应用程序权限来解决的问题。Apple Developer文档明确提到从UIDocumentPickerViewController接收的URL属于安全范围:这同样适用于应用程序范围之外的所有文档。