日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 检查设备是否存在 导航栏 NavigationBar

發布時間:2025/1/21 Android 128 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 检查设备是否存在 导航栏 NavigationBar 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.csdn.NET/lnb333666/article/details/41821149

目前也沒有可靠的方法來檢查設備上是否有導航欄。可以使用KeyCharacterMap.deviceHasKey來檢查設備上是否有某些物理鍵,比如說菜單鍵、返回鍵、Home鍵。然后我們可以通過存在物理鍵與否來判斷是否有NavigationBar(一般來說手機上物理鍵、NavigationBar共存).

public static int getNavigationBarHeight(Activity activity) {Resources resources = activity.getResources();int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");//獲取NavigationBar的高度int height = resources.getDimensionPixelSize(resourceId);return height;}

上面這段代碼,在絕大多數情況下都能獲取到NavigationBar的高度。所以有人想通過這個高度來判斷是否有NavigationBar 是不行的。當然4.0版本以下就不用說了。確認個問題,NavigationBar是4.0以上才有么?

因為設備有物理鍵仍然可以有一個導航欄。任何設備運行自定義rom時都會設置一個選項,是否禁用的物理鍵,并添加一個導航欄。看看API:

ViewConfiguration.get(Context context).hasPermanentMenuKey() ?有這么一句描述 :Report if the device has a permanent menu key available to the user(報告如果設備有一個永久的菜單主要提供給用戶).

Android.view.KeyCharacterMap.deviceHasKey(int keyCode) 的描述:Queries the framework about whether any physical keys exist on the any keyboard attached to the device that are capable of producing the given key code(查詢框架是否存在任何物理鍵盤的任何鍵盤連接到設備生產給出關鍵代碼的能力。).

那么解決的辦法就是:

@SuppressLint("NewApi") public static boolean checkDeviceHasNavigationBar(Context activity) {//通過判斷設備是否有返回鍵、菜單鍵(不是虛擬鍵,是手機屏幕外的按鍵)來確定是否有navigation barboolean hasMenuKey = ViewConfiguration.get(activity).hasPermanentMenuKey();boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);if (!hasMenuKey && !hasBackKey) {// 做任何你需要做的,這個設備有一個導航欄return true;}return false;}

?

總結

以上是生活随笔為你收集整理的Android 检查设备是否存在 导航栏 NavigationBar的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。