• Android 禁用以及捕捉home键


    最近要做个小项目,其中有需要禁止home键的需求,一开始以为不可以,感觉得root一下才行,后来查了一下,发现还是不少朋友都实现了这个功能,现在也引用一下,供大家参考一下:

    1. 在activity中加上这段代码就可以屏蔽home键(onKeyDown事件会捕捉到home键)。


    public void onAttachedToWindow()   
    {     
           this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);        
           super.onAttachedToWindow();     
    }   
      
      2.因为android系统自己对与home键power键在PhoneWindowManager中做了处理,不会返回到上层应用的。以下为系统源码
    frameworkspoliciesasephonecomandroidinternalpolicyimplPhoneWindowManager.java 1089行   
        
    if (code == KeyEvent.KEYCODE_HOME) {   
        
                // If a system window has focus, then it doesn't make sense    
                // right now to interact with applications.    
                WindowManager.LayoutParams attrs = win != null ? win.getAttrs() : null;   
                if (attrs != null) {   
                    final int type = attrs.type;   
                    if (type == WindowManager.LayoutParams.TYPE_KEYGUARD   
                            || type == WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG) {   
                        // the "app" is keyguard, so give it the key    
                        return false;   
                    }   
                    final int typeCount = WINDOW_TYPES_WHERE_HOME_DOESNT_WORK.length;   
                    for (int i=0; i<typeCount; i++) {   
                        if (type == WINDOW_TYPES_WHERE_HOME_DOESNT_WORK[i]) {   
                            // don't do anything, but also don't pass it to the app    
                            return true;   
                        }   
                    }   
                }   
     type == WindowManager.LayoutParams.TYPE_KEYGUARD这一句,我们可以看到,android对于锁屏特殊判断了,所以我就模拟这个进行的实现,只是有一点,activity中重写onAttachedToWindow()方法需要api 5以上。

     摘自 xiaoxiaobian3310903的专栏

  • 相关阅读:
    Gradle Android Plugin 中文手册
    WxApiUtil.ts
    通过qrcodejs2和html2canvas把iframe中的内容生成带二维码的海报长图片
    TypeScript--类型声明
    ZJNU 2663
    ZJNU 2652
    etcd学习(7)-etcd中的线性一致性实现
    com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。
    帝国cms显示点击数比后台多1个的解决方法
    RedHat换源
  • 原文地址:https://www.cnblogs.com/catWang/p/3318458.html
Copyright © 2020-2023  润新知