Android開發關閉虛擬按鈕、底部導航條

   在Android開發中,遇到了一系列大大小小的問題,其中一個就是屏蔽底部實體鍵,我找了不少的博客也嘗試了許許多多的方法,但始終不能屏蔽 HOME鍵,後來看見一篇博客說在Android 4.0之後,屏蔽底部HOME鍵必須反編譯,修改Android底部原生代碼,因而我便放棄了。廢話很少說,我先分享一個屏蔽Android虛擬按鍵的方法,以及最簡單的屏蔽Android的Back按鈕,適合全部版本(未測試,感受是這樣):android

1. Android 屏蔽Back按鍵app

  只須要重寫 onKeyDown 方法就能夠了,代碼以下:ide

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Toast.makeText(MainActivity.this, "·µ»Ø¼üÒѱ»½ûÓÃ...", Toast.LENGTH_SHORT)
                    .show();
            return true; // return true 和 false 我都試過,都能屏蔽,緣由還未知,但願知道的能夠告訴我一下,謝謝
        }return super.onKeyDown(keyCode, event);
    }

 

2. Android 隱藏虛擬導航條(須要系統權限)測試

  須要在 AndroidManifest.xml 中加入如下權限:ui

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

  而後是關閉底部導航條的代碼,我封裝成了一個類,只須要在 onCreate 方法裏調用該方法就行,該類以下:this

package com.jd.nanapptwo.utils;

import android.os.Build;

/**
 * 關閉顯示導航條
 */
public class CloseBarUtil {

    /**
     * 關閉底部導航條
     */
    public static void closeBar() {
        try {
            // 須要root 權限
            Build.VERSION_CODES vc = new Build.VERSION_CODES();
            Build.VERSION vr = new Build.VERSION();
            String ProcID = "79";
            if (vr.SDK_INT >= vc.ICE_CREAM_SANDWICH) {
                ProcID = "42"; // ICS AND NEWER
            }
            // 須要root 權限
            Process proc = Runtime.getRuntime().exec(
                    new String[]{
                            "su",
                            "-c",
                            "service call activity " + ProcID
                                    + " s16 com.android.systemui"}); // WAS 79
            proc.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 顯示底部導航條
     */
    public static void showBar() {
        try {
            Process proc = Runtime.getRuntime().exec(
                    new String[]{"am", "startservice", "-n",
                            "com.android.systemui/.SystemUIService"});
            proc.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

但願以上方法會對大家有幫助。spa

相關文章
相關標籤/搜索