在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