- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想用另一个应用程序打开一个文件(存储在我的本地应用程序中)。
目前,我正在使用 openURL(有一个专用的 url 方案),如果我使用托管在互联网上的文件,它工作正常,但我想使用本地文件,所以:a) 它离线工作b) 很多时候我的用户要么不在小区覆盖范围内,要么在国际漫游
到目前为止我尝试过的:我没有运气告诉 openURL 使用本地文件,我尝试了几种方法,但它们都是这样的
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"ext"];
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
[[UIApplication sharedApplication] openURL:fileURL];
还有
NSURL *fileURL = [[NSBundle mainBundle] URLForResource: @"test" withExtension:@"ext"];
[[UIApplication sharedApplication] openURL:fileURL];
还手动使用具有不同变体的 localhost/和 file://以及 var/mobile 等路径的字符串
没有任何作用(无论如何对我来说)
所以,我环顾四周,发现了 UIDocumentInteractionController
我可以使用 UIDocumentInteractionController 让用户使用其他应用程序打开我的本地文件 - 但是它始终会显示其他应用程序的多个选项供使用,例如,其他应用程序之一可以是“Dropbox”。
我不想让用户下载(或技术上上传)我的文件副本以供他们以其他方式使用。它包含我不想公开的数据。
当文件被我预期的应用程序(不是我制作的)打开时,它不允许任何类型的保存或访问原始数据。
我意识到通过将文件包含在我的应用程序中,任何认真想要获取它的人都可以,我只是不想闪现一个大菜单说'如果你想要自己的副本制作衍生品,就在这里工作于'
理想情况下,我可以使用 openURL,但我认为这是因为另一个应用程序没有响应的“沙盒”——在 Android 中我使用 mode_world_readable 来声明该文件可被其他应用程序读取(因此将它放在沙盒之外,并且它不允许其他应用程序写入它,只是读取) - 有没有对 iOS 做同样的事情?
否则,如果我可以强制 UIDocumentInteractionController 使用特定应用程序而不显示菜单 - 那也很好。
Similar question asked a while ago
抱歉阅读时间过长,感谢您的帮助。
编辑:我刚刚收到 Apple 技术支持的答复,他们告诉我目前这是不可能的(iOS 6 刚刚发布之后)
最佳答案
是的,由于 iOS 上严格的沙盒,您会受到限制。这里有一些想法。
您可以通过子类化 QLPreviewController 来覆盖 UIDocumentInteractionController 的功能。然后,您可以替换显示“打开方式”菜单的标准栏按钮项。看看这篇文章,了解 QLPreviewController 子类化的一种解决方案:QLPreviewController remove or add UIBarButtonItems
当然,我相信应用间共享的工作方式在很大程度上不在您的掌控之中。如果某个应用程序已注册能够处理某种类型的文件,无论您是否愿意,它都会显示为“打开方式”列表中的选项之一。我认为您无法过滤该列表中显示的应用。
这里有两个我想过但从未尝试过的实验性想法:
您可以对您尝试传递的文件中的数据进行 base64 编码——它只是将二进制文件转换为文本——然后将其作为用于启动其他应用程序的自定义 URL 的一部分提交。然后另一个应用程序可以 base64 将相同的数据解码回二进制。缺点是 URL 的长度有限制,这意味着您发送的"file"必须非常小。
接下来,我什至不知道这是否可行,但我想知道您是否可以使用一些 steganograhpy算法将文档数据嵌入到图像中,然后将其交给相机胶卷。然后,另一个应用程序可以打开相机胶卷并将图像再次解码回数据。 ... 是的。我知道......晦涩难懂,但尝试实现可能会很有趣。 ;-)
不确定是否有任何帮助,但您确实说过“感谢任何帮助”。 ;-)
最好的问候。
关于iphone - openURL 本地文件或强制 UIDocumentInteractionController 使用特定应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12539243/
是否可以检查设备上有多少个能够处理特定文件类型的应用程序?基本上,我的应用程序中有一个按钮,允许用户在另一个应用程序中打开,但如果没有可能的应用程序可以打开文档,我不想显示它。 最佳答案 好吧,所以想
我不知道这段代码有什么问题,但每次运行应用程序时,显示菜单后,应用程序都会崩溃。 NSString * path = [[NSBundle mainBundle] pathForResource:@"
我在容器 View 中有一个 UIViewController。 View Controller 在 UIDocumentInteractionController 中显示 PDF,如下所示: let
我有一个 PDF 显示在 UIDocumentInteractionController它很棒。 问题是,该应用程序的重点是保护 PDF 不被共享等。因此我想摆脱出现的选项按钮。 堆栈上有 1000
我一直在使用 Apple 示例代码从这里查看文档: https://developer.apple.com/library/ios/samplecode/DocInteraction/Listings
我有从 UIAlertController 中调用的代码: func createSomeFile() { var output = (some NSData to output to fil
如何指定可用于 UIDocumentInteractionController 的“打开方式”功能的特定“白”应用程序列表?我在 UIDocumentInteractionController 文档中
我的应用程序中的一个屏幕显示了本地镜像的预览,我在左上角有一个操作按钮,我用它来显示文档交互选项: - (IBAction)actionButtonTapped:(id)sender { se
我有一个 ics(日历)文件,我使用 presentOptionsMenuFromRect: 使用 UIDocumentInteractionController 打开它。运行时,“打开方式”菜单看起
我的 IOS 应用程序的方向已锁定为纵向模式。但是,我想支持使用 UIDocumentInteractionController 打开的文件的横向和纵向。这是我打开文件 url 的代码。 let u
我使用 UIDocumentInteractionController 在我的应用程序中预览文档。但是,有时文档显示良好,有时交互 Controller 显示消息“读取文档时出错”。我知道这不是文档的
我对 UIDocumentInteractionController 非常绝望。我唯一想做的就是与注册 PDF 的所有其他应用程序共享我的应用程序中的 pdf 文件。 这是我的代码: NSString
这里有一个奇怪的 iOS 问题... 我有一个可以在我的 iPad 上打开 PDF 的应用程序。 (我只需要在我所处的环境中处理 iPad) 奇怪的是,有时当我尝试加载文件时(DocumentInte
我使用- (BOOL)presentPreviewAnimated:(BOOL)animated; 来加载文档,然后我想从文档中截取屏幕截图。所以我尝试 UIGraphicsBeginImageCon
在我的应用程序中,我下载各种格式的文件。我试图让 UIDocumentInteractionController 获得可以打开这种格式的应用程序。问题是 UIDocumentInteractionCo
我想在应用程序中分享保存的 PDF。实际上,它不适用于 PRINT,也不适用于 MAIL,它正在通过 Whatsapp 和其他应用程序进行共享。 { let fileManager = Fil
在我的 iOS 应用程序中,我使用 DocumentInteractionController 来预览 .csv 文档。 self.documentController = [UIDocume
在我的应用程序中,我想下载各种类型的文件并导出,以便用户可以使用打开此类文件的应用程序打开文件。我正在尝试使用 UIDocumentInteractionController 但在下载后将其保存到我的
我正在使用 UIDocumentInteractionController 与其他应用程序共享在我的应用程序中拍摄的图像。当您使用它与 Instagram 分享时,您可以使用包含键 @"Instagr
当用户从 tableView 中选择一个文件时,我试图从导航 Controller 中呈现一个 UIDocumentInteractionController。 interactionControll
我是一名优秀的程序员,十分优秀!