【问题标题】:Declare Layout_Params.flag_secure in menifest在清单中声明 LayoutParams.flag_secure
【发布时间】:2026-01-06 02:45:01
【问题描述】:

通过此代码可以防止Android应用程序屏幕截图

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
    super.onCreate(savedInstanceState);

}

但是在每个屏幕上都写这段代码很麻烦。有任何方式在清单应用程序或任何地方声明它。

【问题讨论】:

  • AFAIK 唯一可用的属性是android:windowSoftInputMode,它将设置 SoftInput 标志。所以需要在运行时设置WindowManager的Flags。

标签: android screenshot video-capture capture android-screen


【解决方案1】:

为您的应用创建一个BaseActivity,并让所有其他活动扩展它。

public class BaseActivity extends AppCompatActivity {
   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
       getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
       super.onCreate(savedInstanceState);

   }
}

然后你像这样创建你的活动:

public class MyActivity extends BaseActivity {
       @Override
       protected void onCreate(@Nullable Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           // Your code
       }
}

【讨论】:

  • 你的回答解决了我的问题,虽然它不符合问题的要求。