将文件传递给另一个Iphone应用程序

时间:2010-02-04 20:09:36

标签: iphone

是否有人知道这样做的任何样本或开源代码?或者是一篇解释如何做的文章?

Apple有很多示例代码可以在其他应用中打开网址。但我找不到任何应用程序要求其他应用程序打开存储在手机上的文件的示例。

感谢。

6 个答案:

答案 0 :(得分:9)

有两种方法可以做到。

1)如果您可以将文件编码为字符串,则可以通过NSURL将其传递给其他应用。接收应用程序“ReceivingApp”必须实现

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

在它的应用程序委托中。使用

发送您的数据
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"receivingapp://your.data.goes.here"]]];

2)使用pasteboard

我会使用自定义URL方案,因为它1)将为您节省几个步骤; 2)如果接收应用程序出现问题,它不会让操作系统的其余部分访问您的数据。我不确定NSURL的字符限制是什么,但它非常大。

答案 1 :(得分:4)

iPhone SDK没有官方认可的共享存储库 - 每个应用程序都是沙箱。如果数据无法通过URL方案传递,则必须通过“云”完成。 Stanza通过将一些数据存储在DCIM文件夹(用于存放用户的照片)中解决了这个问题,但Apple几天前强迫他们删除了这些功能。

有传言称我们将在4.0 SDK中获得一个新的数据存储,但没有什么可靠的。

答案 2 :(得分:1)

我的理解(虽然我可能完全错了)是应用程序可以访问其他应用程序的文件,但找到它们是问题,因为每个应用程序的目录都分配了一个新的UUID因为它已安装,并且应用程序无法列出/ Applications目录的内容。

如果您自己编写这两个应用程序,则可以使用custom URL scheme将一个应用程序文件的位置传递给另一个应用程序。此外,如果文件足够小,您可以将其作为URL的一部分传递。

答案 3 :(得分:0)

应用无法访问彼此的文件。

答案 4 :(得分:0)

为了扩展对Frank的响应,我认为您可以使用带有文件路径的自定义URL - 但我认为您应该使用的路径将位于Caches目录中的某个位置:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];

我认为其他应用程序可以看到同一个空间。

答案 5 :(得分:0)

除了其他答案提到的自定义URL方案之外,您可以通过存储在可以通过AddressBook API创建的临时联系人字段中加密的数据来破解您的方法。