Ios 当用户不使用';在设备上没有电子邮件帐户
当我试图通过电子邮件使用UIActivityViewController共享pdf文档时出现问题 当用户配置了他的电子邮件共享后,其显示的文档会很好地工作,但是当用户之前没有配置电子邮件帐户时,它会提示用户选择电子邮件提供商,如果我配置了电子邮件帐户,则会显示新的电子邮件,但没有附加文档。如果我在配置电子邮件后再试一次,效果会很好 我在iOS 9和iOS 10上进行了测试,它给了我同样的问题 这是我关于目标C的代码:Ios 当用户不使用';在设备上没有电子邮件帐户,ios,objective-c,uiactivityviewcontroller,Ios,Objective C,Uiactivityviewcontroller,当我试图通过电子邮件使用UIActivityViewController共享pdf文档时出现问题 当用户配置了他的电子邮件共享后,其显示的文档会很好地工作,但是当用户之前没有配置电子邮件帐户时,它会提示用户选择电子邮件提供商,如果我配置了电子邮件帐户,则会显示新的电子邮件,但没有附加文档。如果我在配置电子邮件后再试一次,效果会很好 我在iOS 9和iOS 10上进行了测试,它给了我同样的问题 这是我关于目标C的代码: NSString *file = [NSString stringWithFo
NSString *file = [NSString stringWithFormat:@"file://%@", items[0][@"source"]];
NSURLRequest *urlRequestToLoad = [NSURLRequest requestWithURL:[NSURL URLWithString:file] cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSArray *sharingItems = @[items[0][@"filename"], [urlRequestToLoad URL]];
UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:sharingItems applicationActivities:nil];
[activityController setValue:@"Your email Subject" forKey:@"subject"];
[self.viewController presentViewController:activityController animated:YES completion:nil];
知道我做错了什么吗?是的!简单解决方案:)下载并附加文件。如果您之前在webview中加载PDF,请查看下面的评论
-(void)print:(NSString*)subject withFileName:(NSString*)fileName webFileURL:(NSURL*)webURL{
if ([UIActivityViewController class]) {
if (subject) {
NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *title = [fileName stringByReplacingOccurrencesOfString:@" " withString:@"_"];;
title = [NSString stringWithFormat:@"%@.pdf",title];
NSString * filePath = [documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",title];
// Showing spinner
NSURLRequest *request = [NSURLRequest requestWithURL:webURL];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// Close the spinner
if (error) {
NSLog(@"Download Error:%@",error.description);
}
if (data) {
[data writeToFile:filePath atomically:YES];
dispatch_async(dispatch_get_main_queue(), ^ {
/* Set this available field on the activity controller */
NSMutableArray *items = [NSMutableArray array];
if (data) {
[items addObject:[NSURL fileURLWithPath:filePath]];
}
// Print webView
// {
// [items addObject:[self.webViewInstance viewPrintFormatter]];
// }
if (webURL) {
[items addObject:[NSString stringWithFormat:@"%@ - %@",subject, [webURL absoluteString]];
}
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[activityViewController setValue:subject forKey:@"subject"]; // Set the mail subject.
// If you are not handle it. It will crash in iPad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popPC = activityViewController.popoverPresentationController;
popPC.sourceView = self.view;
popPC.sourceRect = kSharePopArea;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController:activityViewController animated:YES completion:nil];
});
}
}];
}
}
}
NSString *content = @"write text here";
NSError* lError;
NSMutableArray *items = [NSMutableArray array];
if ([NSData dataWithContentsOfURL:fileUrl options:NSDataReadingMappedAlways error:&lError]) // Local file
{
[items addObject:fileUrl];
}
if(content) {
[items addObject:content];
}
if(imagename && [UIImage imageNamed:@"imagename"]) {
[items addObject:[UIImage imageNamed:@"imagename"]];
}
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
// Add email subject.
[activityViewController setValue:@"Your email Subject" forKey:@"subject"];
// If you are not handle it. It will crash in iPad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popPC = activityViewController.popoverPresentationController;
popPC.sourceView = self.view;
popPC.sourceRect = kSharePopArea;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController:activityViewController animated:YES completion:nil];
是的!简单解决方案:)下载并附加文件。如果您之前在webview中加载PDF,请查看下面的评论
-(void)print:(NSString*)subject withFileName:(NSString*)fileName webFileURL:(NSURL*)webURL{
if ([UIActivityViewController class]) {
if (subject) {
NSString *documentDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
NSString *title = [fileName stringByReplacingOccurrencesOfString:@" " withString:@"_"];;
title = [NSString stringWithFormat:@"%@.pdf",title];
NSString * filePath = [documentDir stringByAppendingPathComponent:[NSString stringWithFormat:@"/%@",title];
// Showing spinner
NSURLRequest *request = [NSURLRequest requestWithURL:webURL];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// Close the spinner
if (error) {
NSLog(@"Download Error:%@",error.description);
}
if (data) {
[data writeToFile:filePath atomically:YES];
dispatch_async(dispatch_get_main_queue(), ^ {
/* Set this available field on the activity controller */
NSMutableArray *items = [NSMutableArray array];
if (data) {
[items addObject:[NSURL fileURLWithPath:filePath]];
}
// Print webView
// {
// [items addObject:[self.webViewInstance viewPrintFormatter]];
// }
if (webURL) {
[items addObject:[NSString stringWithFormat:@"%@ - %@",subject, [webURL absoluteString]];
}
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
[activityViewController setValue:subject forKey:@"subject"]; // Set the mail subject.
// If you are not handle it. It will crash in iPad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popPC = activityViewController.popoverPresentationController;
popPC.sourceView = self.view;
popPC.sourceRect = kSharePopArea;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController:activityViewController animated:YES completion:nil];
});
}
}];
}
}
}
NSString *content = @"write text here";
NSError* lError;
NSMutableArray *items = [NSMutableArray array];
if ([NSData dataWithContentsOfURL:fileUrl options:NSDataReadingMappedAlways error:&lError]) // Local file
{
[items addObject:fileUrl];
}
if(content) {
[items addObject:content];
}
if(imagename && [UIImage imageNamed:@"imagename"]) {
[items addObject:[UIImage imageNamed:@"imagename"]];
}
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
// Add email subject.
[activityViewController setValue:@"Your email Subject" forKey:@"subject"];
// If you are not handle it. It will crash in iPad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popPC = activityViewController.popoverPresentationController;
popPC.sourceView = self.view;
popPC.sourceRect = kSharePopArea;
popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;
}
[self presentViewController:activityViewController animated:YES completion:nil];
我认为你所做的一切都可以,它就是这样工作的。你想共享本地文档吗?它是本地文档。我认为你所做的一切都可以,它就是这样工作的。你想共享本地文档吗?它是本地文档。它是本地文档,我不需要下载。它是本地文档,我不需要下载。