0
有没有办法阻止从服务的任何应用程序的触摸?我一直在想getWindow()
,但这在服务中是不可能的。此外,我一直在考虑获取当前活动,然后使用getWindow()
。我希望你明白我试图达成的目标。从服务块触摸
有没有办法阻止从服务的任何应用程序的触摸?我一直在想getWindow()
,但这在服务中是不可能的。此外,我一直在考虑获取当前活动,然后使用getWindow()
。我希望你明白我试图达成的目标。从服务块触摸
感谢David Medenjak我设法解决了这个问题。该解决方案正在研究23以下的Android API,并且它将使屏幕变黑并阻止触摸,直到您在屏幕上长按。
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
ImageView black = new ImageView(this);
black.setImageResource(R.drawable.black);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 0;
windowManager.addView(black, params);
black.getLayoutParams().height = windowManager.getDefaultDisplay().getHeight();
black.getLayoutParams().width = windowManager.getDefaultDisplay().getWidth();
black.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false;
}
});
您可以使用'WindowManager'在顶部添加一个视图,并自己消耗所有的点击次数。这就是那些“屏幕锁定”应用程序的做法。 –
好主意。谢谢!我得到这个_无法添加窗口android.view.ViewRootImpl$[email protected] - 权限被拒绝这个窗口type_。当我尝试在Android API> = 23的设备上将视图添加到“WindowManager”时发生错误。 – jelic98