android 按menu键解锁功能的开关

android 4.4

android 5.0

android 5.1

修改文件frameworks\base\packages\Keyguard\res\values\config.xml

里的

<!-- Allow the menu hard key to be disabled in LockScreen on some devices [DO NOT TRANSLATE] -->

<bool name="config_disableMenuKeyInLockScreen">false</bool>

改为true 即可禁用该功能。

在5.1中

:~/code/ardroid5.1/frameworks/base/packages/Keyguard$ grep -rin "config_disableMenuKeyInLockScreen" ./
./res/values/config.xml:30:    <bool name="config_disableMenuKeyInLockScreen">false</bool>
./src/com/android/keyguard/KeyguardViewBase.java:412:        final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen);
:~/code/ardroid5.1/frameworks/base/packages/Keyguard$ grep -rin "configDisabled" ./
./src/com/android/keyguard/KeyguardViewBase.java:412:        final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen);
./src/com/android/keyguard/KeyguardViewBase.java:415:        return !configDisabled || isTestHarness || fileOverride;
:~/code/ardroid5.1/frameworks/base/packages/Keyguard$ vim ./src/com/android/keyguard/KeyguardViewBase.java +415

private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key";
    private boolean shouldEnableMenuKey() {
        final Resources res = getResources();
        final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen);
        final boolean isTestHarness = ActivityManager.isRunningInTestHarness();
        final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists();
        return !configDisabled || isTestHarness || fileOverride;
    }

:~/code/ardroid5.1/frameworks/base/packages/Keyguard$ grep -rin "shouldEnableMenuKey" ./
./src/com/android/keyguard/KeyguardViewBase.java:410:    private boolean shouldEnableMenuKey() {
./src/com/android/keyguard/KeyguardViewBase.java:421:        if (shouldEnableMenuKey() && !mLockPatternUtils.isSecure()) {
:~/code/ardroid5.1/frameworks/base/packages/Keyguard$ vim ./src/com/android/keyguard/KeyguardViewBase.java +421

public boolean handleMenuKey() {
        // The following enables the MENU key to work for testing automation
        if (shouldEnableMenuKey() && !mLockPatternUtils.isSecure()) {
            dismiss();
            return true;
        }
        return false;
    }

:~/code/ardroid5.1/frameworks/base/packages/SystemUI$ grep -rin "handleMenuKey" ./
./src/com/android/systemui/statusbar/phone/KeyguardBouncer.java:226:        if (mKeyguardView.handleMenuKey()) {

public boolean onMenuPressed() {
        ensureView();
        if (mKeyguardView.handleMenuKey()) {

// We need to show it in case it is secure. If not, it will get dismissed in any case.
            mRoot.setVisibility(View.VISIBLE);
            mKeyguardView.requestFocus();
            mKeyguardView.onResume();
            return true;
        } else {
            return false;
        }
    }

:~/code/ardroid5.1/frameworks/base/packages/SystemUI$ grep -rin "onMenuPressed" ./
./src/com/android/systemui/statusbar/phone/KeyguardBouncer.java:224:    public boolean onMenuPressed() {
./src/com/android/systemui/statusbar/phone/PhoneStatusBar.java:3875:    public boolean onMenuPressed() {
./src/com/android/systemui/statusbar/phone/PhoneStatusBar.java:3876:        return mState == StatusBarState.KEYGUARD && mStatusBarKeyguardViewManager.onMenuPressed();
./src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java:406:    public boolean onMenuPressed() {
./src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java:407:        return mBouncer.onMenuPressed();
./src/com/android/systemui/statusbar/phone/StatusBarWindowView.java:132:                    return mService.onMenuPressed();

./src/com/android/systemui/statusbar/phone/StatusBarWindowView.java:132:                    return mService.onMenuPressed();
    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_BACK:
                if (!down) {
                    mService.onBackPressed();
                }
                return true;
            case KeyEvent.KEYCODE_MENU:
                if (!down) {
                    return mService.onMenuPressed();
                }

时间: 2024-12-22 05:49:38

android 按menu键解锁功能的开关的相关文章

Atitit.android js 的键盘按键检测Back键Home键和Menu键事件

1. onKeyDown @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { // 在这里做你想做的事情 // super.openOptionsMenu();  // 调用这个,就可以弹出菜单 webView.loadUrl("javascript:KEYCODE_MENU_handle()"); } return true;

android部分机型(HTC D610) menu键的显示问题

今天遇到了一个很恶心的问题... htc某些机器的menu键是在屏幕里的,可以由系统控制显示和隐藏.今天遇到了一个问题,有两个应用,一个运行后显示menu键,另一个不显示... 找了好一会儿,发现是 android:targetSdkVersion="18"的问题 最终sdk build version 19(4.4.2),minSdkVersion = "8",不指定targetSdkVersion.就都显示了... android部分机型(HTC D610) m

Android 响应menu,back键,点击外部消失

点击外部消失,只需要设置popupWindow.setBackgroundDrawable(new PaintDrawable()); 设置 popupWindow.setFocusable(true); //popupWindow.setBackgroundDrawable(new PaintDrawable()); popupWindow.setOutsideTouchable(true); popupWindow_view.setFocusableInTouchMode(true);也可以

android的开发 华为手机上不显示menu键

android的开发,华为手机上不显示menu键解决办法: 在AndroidManifest.xml中讲targetSdkVersion改为9. <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="9" /> 原因: (2)高版本默认OptionsMenu在ActionBar里,不会有虚拟menu键: (1)华为没有菜单键的硬按钮.

java 学习第11课,android 实现拨打电话的功能

1. 先布局界面,界面采用线性垂直方式来布局 在layout 界面文件中 activity_main.xml 中 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation=&

禁用menu键

发现很多应用中基本不再使用menu键来显示菜单了,而在android studio中创建一个activity时,默认使用了actionBar,就是在右上角会显示三个点的内容,点击会出现Settings,当点击menu键时,在屏幕下方也会出现Settings菜单.如何禁用menu呢,重写onKeyDown方法即可.直接看代码 1 @Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 if(keyCode == K

Android使用GridView实现日历功能(详细代码)

代码有点多,发个图先: 如果懒得往下看的,可以直接下载源码吧(0分的),最近一直有人要,由于时间太久了,懒得找出来整理,今天又看到有人要,正好没事就整理了一下 http://download.csdn.net/detail/onlyonecoder/6574379 布局文件: [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi

Android ListView条目全选功能,不用checkbox实现!

大家好,翻了翻以前的笔记,发现了一个我特别标记的功能,那就是ListView全选功能,顿时想起了我那个时候苦逼的生涯,由于我大学机械出身,大学毕业了都不知道什么叫代码,在58干了一段销售.实在是干不下去了,不干了就得在网上找工作,就喜欢干电脑相关的工作,有一天,一家培训机构给我打来电话让我去面试,我以为让我去工作那,谁知道是忽悠我去培训,我当然不可能花钱了,就直接回去了,想了几天,除了销售我真不知道干啥,咬咬牙,就花钱培训了.我擦,咋说这到了,不跟你们说了,还是写下面的这个功能吧,虽然很简单,但

安卓Menu键的问题

近期开发中有须要Menu键,结果发现了一个非常尴尬的问题.我的測试机上有Menu键.可是測试平板上没有,队友的測试机上竟然也没有Menu键.这着实有些尴尬... 上网谷歌之后才发现问题所在: 仅仅有在android 4.0 之前的机器中,menu 键是才作为硬件存在的,之后的机器有的有.有的就没有了,比方三星的S3,Note2等等都是有这个按键的.可是很多其它的手机取消了这个按键.所以假设project中实用到这个按键,那就必须调低最低版本号, 比方android 2.2 的project,跑到