Loading... > 先前有个项目代码需要做代码审计,因此将大部分代码打包成`library`调用了,包括`BaseActivity`,项目当时做等保,屏蔽了截图功能,目前需要恢复. #### 屏蔽截图 首先讲如何屏蔽截图,一般只需要针对`Activity`设置Flag为`FLAG_SECURE`即可 我们选择在`BaseActivity`的`onCreate`方法中处理,这样所有继承的子类都实现了屏蔽截图. ```java @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } ``` 此时再截图就会提示“当前界面涉及隐私内容,不允许截屏” #### 解除截屏限制 解除方法很简单,直接去掉上述Flag即可,但是目前的项目存在的问题是`BaseActivity`在`library`中,没有办法直接修改`aar`中的代码,或者说修改`aar`中的代码太麻烦了,那么有没有更简单的方法呢?答案是有的: 在我的`Application`中有用到这样一行代码 ```java registerActivityLifecycleCallbacks(activityLifecycleCallbacks); ``` 注册了所有`activity`的生命周期监听,可以用来处理应用切换到前台后台的监听,做一些诸如判断网络状态重连等。 ```java public interface ActivityLifecycleCallbacks { void onActivityCreated(Activity activity, Bundle savedInstanceState); void onActivityStarted(Activity activity); void onActivityResumed(Activity activity); void onActivityPaused(Activity activity); void onActivityStopped(Activity activity); void onActivitySaveInstanceState(Activity activity, Bundle outState); void onActivityDestroyed(Activity activity); } ``` 既然如此,我们直接在`onActivityCreated`的时候处理不就行了吗? ```java @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } ``` 事实证明,并非如此。`onActivityCreated`确实会在`onCreate`之后调用,但是却是在`super.onCreate(savedInstanceState);`之后就已经调用了,我们的`addFlags`代码是在其后面写的,所以整个流程是 [onCreate的super.onCreate]{.label} [onActivityCreated的clearFlags]{.label .warning} [onCreate的addFlags]{.label .danger} 顺序不对,自然无法生效,所以我们只能在`onActivityStarted`中处理了 ```java @Override public void onActivityStarted(Activity activity) { //无法编辑lib中的QFLibBaseActivity,直接在这里处理 activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); if (activityCount == 0) { isForeground = true; INSLog.e("logan", "app回到前台,开始更新状态"); Intent intent = new Intent(); intent.setAction(QFMainActivity.ACTION_REFRESH_NETWORK_STATE); sendBroadcast(intent); } activityCount++; } ``` 然后我们就能正常截图了。 最后修改:2023 年 05 月 31 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏