Java 像普通活动一样创建系统覆盖窗口

Java 像普通活动一样创建系统覆盖窗口,java,android,android-layout,lockscreen,Java,Android,Android Layout,Lockscreen,我的应用程序锁定了手机,我发现我可以通过创建一个系统覆盖窗口来实现这一点。 但我希望此窗口包含按钮和生成文本视图和处理onClick事件 怎么做?你能提供样品代码吗 这是我想做的一个例子 以下代码显示了如何通过WindowManager添加覆盖视图。不幸的是,这些代码在跳转到“最近的任务”活动时不起作用 向AndroidManifest.xml添加权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW

我的应用程序锁定了手机,我发现我可以通过创建一个系统覆盖窗口来实现这一点。 但我希望此窗口包含按钮和生成
文本视图
处理
onClick
事件 怎么做?你能提供样品代码吗 这是我想做的一个例子
以下代码显示了如何通过
WindowManager
添加覆盖视图。不幸的是,这些代码在跳转到“最近的任务”活动时不起作用

向AndroidManifest.xml添加权限

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
演示用户界面如下所示:


您面临的问题是什么?问题是我不知道如何进行系统覆盖,在其活动激活之前,窗口是在顶部的。。为什么你想使用窗口作为锁定屏幕正如你可以自己使用活动一样你可以在活动上编写代码,然后只要在你想锁定屏幕时启动该活动。我没有找到锁定硬按钮的方法…什么是“最近的任务”活动?就像图片中的用户界面。403禁止我无法访问尝试:啊,好的,非常感谢
WindowManager windowManager  = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
} else {
    layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
}
layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
layoutParams.x = 0;
layoutParams.y = 0;
layoutParams.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
        | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
View window = LayoutInflater.from(this).inflate(R.layout.layout_window, null, false);
window.findViewById(R.id.left).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(FirstActivity.this, "Click Lock", Toast.LENGTH_SHORT).show();
    }
});
windowManager.addView(window, layoutParams);