2011-07-20 44 views
13

我想知道是否有方法通过某些“onXXXXX”回调方法检测到或接收到广播,如果其他进程正在拍摄我的应用程序显示屏幕截图。例如,如果SDK工具或其他屏幕捕获应用程序执行“屏幕捕获”,我希望收到通知,然后决定是否允许或不允许屏幕捕获。阻止在Android应用程序中捕获屏幕

如果这是不可能的,是否有办法锁定显示器,以便其他进程不能屏幕捕获我的显示器?

回答

5

no supported method可以截取Android上的其他应用。唯一的方法是使用生根或使用SDK,这两者都不会阻止或接收通知。如果其他应用程序占用您的屏幕截图,则默认情况下会使用不支持的方法,并且可能会按照您的喜好进行操作。

我想澄清一下,我不是暗示你不应该使用任何可用的方法来保护你的应用程序。我只是让你知道,如果不使用不支持的方法,这可能是不可能的,而且即使你使用它们,你也可能无法百分之百保护屏幕截图。

+0

实际上,这些功能在官方资源中已经开始出现,并且可以在非root应用程序的许多供应商设备上使用。 –

+0

尽管如此,它们在API文档中才是官方的。我只是说,因为截取屏幕截图的任何方法目前都不受支持,或者直接来自SDK,因此很可能没有官方方法与其进行交互。 –

+0

'View.getDrawingCache(boolean autoScale)''?该文件显示:_返回该视图图形缓存的位图._ – iDroid

18

这个工作对我的三星标签2 7"

使用the following approach,简单地将FLAG_SECURE添加到窗口标志

public class FlagSecureTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    getWindow().setFlags(LayoutParams.FLAG_SECURE, 
         LayoutParams.FLAG_SECURE); 

    setContentView(R.layout.main); 
    } 
} 

与您可能需要更改警告

LayoutParams 

WindowManager.LayoutParams 
+0

这个工作,应该是大多数开发人员的答案。 –

+0

无法在7.0环境模式下工作.. –