截取当前前台应用程序的截图

Maj*_*ssi 0 ios ios5

我正在使用此代码在iOS中截取屏幕截图:

- (UIImage*)screenshot 
{
    CGSize imageSize = [[UIScreen mainScreen] bounds].size;
    if (NULL != UIGraphicsBeginImageContextWithOptions)
        UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
    else
        UIGraphicsBeginImageContext(imageSize);

    CGContextRef context = UIGraphicsGetCurrentContext();

    // Iterate over every window from back to front
    for (UIWindow *window in [[UIApplication sharedApplication] windows]) 
    {
        if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen])
        {
            CGContextSaveGState(context);
            CGContextTranslateCTM(context, [window center].x, [window center].y);
            CGContextConcatCTM(context, [window transform]);
            CGContextTranslateCTM(context,
                  -[window bounds].size.width * [[window layer] anchorPoint].x,
                  -[window bounds].size.height * [[window layer] anchorPoint].y);

            [[window layer] renderInContext:context];

            CGContextRestoreGState(context);
        }
    }

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;
}
Run Code Online (Sandbox Code Playgroud)

代码在我的应用程序在后台运行时运行.

问题是它总是需要我的应用程序的屏幕截图,而我希望它采取当前的屏幕.

可能吗?怎么样?

- 编辑 -

实际上它是可能的,(例如,请参阅此appstore应用程序).那剩下的问题是怎么样的?

Und*_*ndo 7

没有.

代码总是会截取您的应用程序的截图:这是您的应用程序.

想象一下,后台应用能够截取当前屏幕截图的隐私含义:

我,用户,在使用Bob的Malicious Money Stealer时刚刚点击主页按钮,并已切换到查看我的电子邮件 - 这恰好是我银行的账单,其中包括我的账号,ATM卡号,和我的PIN(这不是一个非常好的银行).

现在,我刚刚使用的恶意应用程序决定现在是一个了解我的目标的适当时机.它需要我当前屏幕的屏幕截图,并将其上传到服务器.

第二天,我所有的钱都没了,我起诉苹果.