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的专栏

  • 相关阅读:
    Android webView 缓存 Cache + HTML5离线功能 解决
    android 退出系统
    WebView简介(加速加载篇)
    android 处理Back键按下事件
    android 极细线
    [cnblog新闻]历史性时刻:云硬件支出首次高于传统硬件
    Oracle ORDS的简单SQL配置模板
    [cnbeta]华为值多少钱,全世界非上市公司中估值最高的巨头
    其他数据库的restful方式
    [CB]2018全球半导体营收4700亿美元 三星继续碾压英特尔
  • 原文地址:https://www.cnblogs.com/catWang/p/3318458.html
Copyright © 2011-2022 走看看