防止Android应用中的屏幕截图

bur*_*eck 13 android screenshot

我想知道是否有办法检测通过一些"onXXXXX"回叫方法或接收广播,如果其他一些过程即将拍摄我的应用程序的显示屏幕.例如,如果SDK工具或其他一些屏幕捕获应用程序执行"屏幕捕获",我希望得到通知,然后决定是否应该允许或禁止屏幕捕获.

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

use*_*844 21

这适用于三星Tab 2 7"

使用以下方法,只需添加FLAG_SECURE到Window Flags即可

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

警告你可能需要改变

LayoutParams
Run Code Online (Sandbox Code Playgroud)

WindowManager.LayoutParams
Run Code Online (Sandbox Code Playgroud)

  • getWindow()。setFlags(WindowManager.LayoutParams.FLAG_SECURE,WindowManager.LayoutParams.FLAG_SECURE);`不适用于Android Pie。 (2认同)

Jak*_*ile 5

没有支持的方法采取在Android上其他应用的屏幕截图.唯一的方法是使用root或使用SDK,它们几乎不提供阻止或接收通知的机会.如果另一个应用程序截取您的屏幕截图,默认情况下使用不受支持的方法,可以随心所欲.

我想澄清一点,我并不是说你不应该使用任何可用的方法来保护你的应用程序.我只是让你知道,如果不使用不支持的方法,这可能是不可能的,即使你使用它们,你也可能无法100%安全地对付截图.