java - Android - 如何使屏幕覆盖上的按钮可点击

标签 java android

我正在尝试通过屏幕覆盖实现一个简单的锁屏。我在 XML 布局中添加了一个按钮,应用程序成功覆盖了屏幕,但该按钮似乎不起作用。

    public WindowManager winManager;
    public RelativeLayout wrapperView;

    @Override
    protected void onCreate(Bundle savedInstanceState). {      ((KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE)).newKeyguardLock("IN").disableKeyguard();
    PackageManager p = getPackageManager();
            p.setComponentEnabledSetting(getComponentName(),     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
        finish();
        super.onCreate(savedInstanceState);
        WindowManager.LayoutParams     localLayoutParams = new WindowManager.LayoutParams( WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE|

                                                                                    WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
                                                                                      WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                                                                                      PixelFormat.TRANSLUCENT);

        this.winManager =     ((WindowManager)getApplicationContext().getSystemService(WINDOW_SERVICE));
        this.wrapperView = new     RelativeLayout(getBaseContext());
        getWindow().setAttributes(localLayoutParams);
        View.inflate(this, R.layout.lackiscreen, this.wrapperView);
        this.winManager.addView(this.wrapperView, localLayoutParams);


    }
    public void dclick(View view){
        this.winManager.removeView(this.wrapperView);
        this.wrapperView.removeAllViews();
    }

最佳答案

Android 只允许非常特定的窗口在覆盖时接收触摸事件。您需要正确设置标志。

WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT
);

希望对您有所帮助。 (至少对我有用)

关于java - Android - 如何使屏幕覆盖上的按钮可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043643/

相关文章:

android - E/FirebaseInstanceId : Token retrieval failed: AUTHENTICATION_FAILED - what changed?

android - 生成pom.xml的maven插件

带有按钮onClick事件的android自定义对话框

java - 如何将 Java DB(名为 Derby)与 hibernate 一起使用?

java - 如何在 Java 中包装 Collection 的每个对象?

java - xpath : prefix must resolve to a namespace:xsd

java - 如何将 JSON 对象从 Javascript 传递到 Java

Android:Cloud Firestore (24.0.2) 中的内部错误

android - 如何防止使用泄露的 keystore 和密码?

java - mybatis使用动态sql foreach