我们正在为学校编写软件,要求用户在Android上激活固定窗口模式,以防止学生离开我们的应用程序。不幸的是,Android并没有限制其他应用绘制当前固定的应用,而Facebook Messenger等应用仍可以在固定模式下绘制我们的应用并显示消息的预览。
是否有一种方法可以防止所有其他应用覆盖当前活动的应用?
注意:到目前为止,我正在使用辅助功能模式进行设置,并禁用所有其他应用程序的透支权限。我稍后将它们恢复到原始状态。我发现此解决方案非常丑陋,而且不方便用户使用,因此正在寻找更好的方法。
答案 0 :(得分:0)
您可以覆盖方法View.onFilterTouchEventForSecurity()
,它可以检测FLAG_WINDOW_IS_OBSCURED
是否存在运动事件,并让您知道活动顶部是否有视图< / p>
@Override
public boolean onFilterTouchEventForSecurity(MotionEvent event) {
if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) == MotionEvent.FLAG_WINDOW_IS_OBSCURED){
// show error message
return false;
}
return super.onFilterTouchEventForSecurity(event);
}
,如果您希望避免在应用程序上绘制其他应用程序,则可以通过XML或通过编程将setFilterTouchesWhenObscured
添加到视图中。