zoukankan      html  css  js  c++  java
  • 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的专栏

  • 相关阅读:
    ASP.NET面试资料【六】
    让Google帮你托管AJAX库
    JavaScript:prototype属性使用说明【转】
    如何存储Session
    给HyperLink控件连接资源文件
    Atcoder Regular Contest 096 D Sweet Alchemy(贪心+多重背包)
    NOI2021 去不了记
    一个测试你的浏览器支持多少HTML5元素的网站
    json怎么读
    QT元件(QTableView、QSql*之类)的最好开在堆空间中用指针操作
  • 原文地址:https://www.cnblogs.com/catWang/p/3318458.html
Copyright © 2011-2022 走看看