创建系统覆盖 window 像正常一样 activity

Creating System overlay window Like a normal activity

我的应用程序锁定了 phone ,我发现我可以通过创建一个覆盖层 window 的系统来做到这一点。 但我希望这个 window 包含按钮和 generate TextViewshandle onClick 事件 怎么做 ?你能提供示例代码吗 这是我想做的事的例子 example for the activity

以下代码展示了如何通过WindowManager添加叠加视图。不幸的是,这些代码在跳转到 "Recent Task" Activity.

时不起作用

添加权限 AndroidManifest.xml

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

然后,在Java中写入这些代码。

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);

演示用户界面显示如下: