iOS6 UIActivityViewController 是否有与此等效的代码(下面的代码)?问题是,我可以通过 url 共享数据并保留文件名吗?到目前为止,我能弄清楚如何做到这一点的唯一方法是将 PDF 转换为 NSData 并将数据添加为 activityItem。工作正常,但我丢失了附件 pdf 的名称。
[composer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"];
iOS6 UIActivityViewController 是否有与此等效的代码(下面的代码)?问题是,我可以通过 url 共享数据并保留文件名吗?到目前为止,我能弄清楚如何做到这一点的唯一方法是将 PDF 转换为 NSData 并将数据添加为 activityItem。工作正常,但我丢失了附件 pdf 的名称。
[composer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"myPDF.pdf"];
是的,我认为这是可能的,试试这个
NSString *str = [[NSBundle mainBundle] pathForResource:@"AppDistributionGuide" ofType:@"pdf"];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[@"Test", [NSURL fileURLWithPath:str]] applicationActivities:nil];
请参考以下方法来实现。保留从 URL 读取的附加文件的文件名:
dispatch_async(dispatch_get_main_queue(), ^ {
NSData *fileData;
NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [documentDir stringByAppendingPathComponent:@"filename.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.test.com/filename.pdf"]];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (error) {
NSLog(@"Download Error:%@",error.description);
}
if (data) {
fileData = data;
[data writeToFile:filePath atomically:YES];
NSLog(@"File is saved to %@",filePath);
}
}];
if(fileData && filePath) {
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[[NSURL fileURLWithPath:filePath]] applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];
}
});