android-如何检测我的活动何时被遮盖?

android-如何检测我的活动何时被遮盖?,第1张

概述我希望能够检测到我的活动是否被系统警报或其他叠加层(例如,长按电源按钮时的电源菜单)或检测到我的启动的恶意软件所遮盖活动.我注意到在这种情况下,前台应用程序仍将是我的应用程序,因此我不能简单地将其作为前台应用程序.我还注意到,当我的活动被遮盖时,不会调用onPause(),因此

我希望能够检测到我的活动是否被系统警报或其他叠加层(例如,长按电源按钮时的电源菜单)或检测到我的启动的恶意软件所遮盖活动.我注意到在这种情况下,前台应用程序仍将是我的应用程序,因此我不能简单地将其作为前台应用程序.我还注意到,当我的活动被遮盖时,不会调用onPause(),因此我也无法在onPause()中放入任何逻辑.即使可以,我仍然必须区分系统警报/覆盖和用户按下“后退” /“主页”按钮.

我还有其他方法可以做到这一点吗?

解决方法:

您可以检查“活动”,“片段”或“视图”是否被遮盖.

对于活动,您需要重写dispatchTouchEvent方法,并检查事件是否具有标志FLAG_WINDOW_IS_OBSCURED.有示例代码:

public class OverlaytouchActivity extends Activity {    private boolean mObscuredtouch;    public boolean isObscuredtouch() {      return mObscuredtouch;    }    @OverrIDe    public boolean dispatchtouchEvent(MotionEvent event) {      mObscuredtouch = (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0;      return super.dispatchtouchEvent(event);    }}

这是AndroID代码的一部分,请检查OverlayTouchActivity.java.为了检查Fragment是否被遮盖,请在Fragment中执行属于OverlaytouchActivity活动的以下代码:

OverlaytouchActivity activity = (OverlaytouchActivity) getActivity();if (activity.isObscuredtouch()) {    // Fragment is bbscured}

请参阅AppPermissionsFragment.java片段(搜索OverlaytouchActivity).

对于VIEw,您应该覆盖onFilterTouchEventForSecurity方法.有关更多信息,请参见VIEw文档中的security section.

总结

以上是内存溢出为你收集整理的android-如何检测我的活动何时被遮盖?全部内容,希望文章能够帮你解决android-如何检测我的活动何时被遮盖?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1090816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存