-2

こんにちは、以下のコードを使用してスクリーンショットを mailcomposer に添付しています。確認するデバイスがないので、これは実際のデバイスで動作しますか?

-(void)launchMailAppOnDevice
{
    /*Take a SnapShot of current screen*/
    UIGraphicsBeginImageContext(self.view.frame.size);
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    NSData * imageData = UIImageJPEGRepresentation(image, 1.0);

    NSString *recipients = @"mailto:xyz@abc.com?cc=@\"\"&subject=blah!!blah!!";

    NSString *body = @"&body=blah!!blah!!";

    NSString *email = [NSString stringWithFormat:@"%@%@%@", recipients, body,  imageData];
    email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
}
4

2 に答える 2

6

最後の 5 行が間違っています。ほとんどの場合、MFMailComposeViewController クラスを使用する必要があります。

MFMailComposeViewController *mcv = [[MFMailComposeViewController alloc] init];

[mcv setSubject:@"blah!!blah!!"];
[mcv setToRecipients:[NSArray arrayWithObject:@"xyz@abc.com"]];
[mcv setMessageBody:@"Blah!! 'tis the body!" isHTML:NO];
[mcv addAttachmentData:imageData mimeType:@"image/jpeg" fileName:@"Screenshot.jpg"];

[someViewController presentModalViewController:mcv animated:YES];
[mcv release];

P. s .: MessageUI フレームワークをプロジェクトに追加することを忘れないでください#import <MessageUI/MessageUI.h>

P. ps: 実際のデバイスでテストすることは重要ですが、実際のコードを記述する前に、いくつかのガイドとドキュメントを読むことがさらに重要です。

于 2012-08-11T15:03:09.123 に答える
1

以下を追加します。

NSData *imageData = UIImagePNGRepresentation(image);
[picker addAttachmentData:imageData mimeType:@"image/png"   fileName:@"fileName"];

を使用する予定がMFMailComposeViewControllerある場合は、mailto: の代わりに使用する必要がありますが、常に実際のデバイスでアプリケーションをテストすることがいかに重要であるかを十分に強調することはできません。

于 2012-08-11T14:55:48.780 に答える