在Android開發中,遇到了一系列大大小小的問題,其中一個就是屏蔽底部實體鍵,我找了很多的博客也嘗試了許許多多的方法,但始終不能屏蔽 HOME鍵,后來看見一篇博客說在Android 4.0以后,屏蔽底部HOME鍵必須反編譯,修改Android底部原生代碼,於是我便放棄了。廢話不多說,我先分享一個屏蔽Android虛擬按鍵的方法,以及最簡單的屏蔽Android的Back按鈕,適合所有版本(未測試,感覺是這樣):
1. Android 屏蔽Back按鍵
只需要重寫 onKeyDown 方法就可以了,代碼如下:
@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 中加入以下權限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
然后是關閉底部導航條的代碼,我封裝成了一個類,只需要在 onCreate 方法里調用該方法就行,該類如下:
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(); } } }
希望以上方法會對你們有幫助。