iOS 共享檔案的方法,應用間傳文件
NSString *filePath =
[[NSBundlemainBundle]
pathForResource:@"PDF Document"ofType:@"pdf"];
NSLog(@"file path is: %@", filePath);
self.documentController =
[UIDocumentInteractionController
interactionControllerWithURL:[NSURLfileURLWithPath:filePath]];
self.documentController.delegate = self;
self.documentController.UTI = @"com.adobe.pdf";
[self.documentControllerpresentOpenInMenuFromRect:CGRectZero
inView:self.view
animated:YES];
將以上程式碼放置到一個控制元件對應的action方法中,觸發該控制元件就會讓系統彈出“OpenIn”選單,有使用者選者使用什麼程式開啟你所共享的應用。 注意,在“OpenIn”選單中會出現所有聲稱支援對應文件型別的應用,比如上例中的“OpenIn”選單中會出現所有“聲稱”支援pdf格式的應用圖示,至於使用者選擇哪個應用,所選擇的應用是否真的可以正常處理pdf文件是我們無法控制的。 為了使用其它應用程式共享的文件,接受文件的應用需要完成兩個工作。 第一個工作是在應用的Info.plist中加入宣告,宣告該程式支援什麼文件格式。比如你需要支援pdf文件,就可以在你的應用專案配置介面選擇“Info”頁面的“Document types”區段,在裡面加入pdf文件型別的配置,如下圖:第二個工作是接受其它程式共享的資料,正常做法是在應用的openURL方法中加入響應程式碼,在該程式碼中去訪問引數URL中紀錄的文件,該URL指向本應用Documents目錄中的inbox目錄中的一個檔案,該檔案就是其它程式共享的文件的一個拷貝。具體程式碼如下:
- (BOOL) application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
NSLog(@"openURL method was called");
NSLog(@"the source application is: %@", sourceApplication);
NSLog(@"url is: %@", url);
NSLog(@"handle the file in above file path for the shared doc");
returnYES;
}
以上openURL方法通過控制檯列印了列印了共享文件的應用名稱和所共享的文件在本應用中的訪問路徑,通過這個訪問路徑開發人員可以在本應用中訪問到其它應用所共享的文件。