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

目前也没有可靠的方法来检查设备上是否有导航栏。可以使用KeyCharacterMap.deviceHasKey来检查设备上是否有某些物理键,比如说菜单键、返回键、Home键。然后我们可以通过存在物理键与否来判断是否有NavigationBar(一般来说手机上物理键、NavigationBar共存).

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getNavigationBarHeight(Activity activity) {  
  2.         Resources resources = activity.getResources();  
  3.         int resourceId = resources.getIdentifier("navigation_bar_height",  
  4.                 "dimen""android");  
  5.         //获取NavigationBar的高度  
  6.         int height = resources.getDimensionPixelSize(resourceId);  
  7.         return height;  
  8.     }  

上面这段代码,在绝大多数情况下都能获取到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(查询框架是否存在任何物理键盘的任何键盘连接到设备生产给出关键代码的能力。).


那么解决的办法就是:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. @SuppressLint("NewApi")   
  2.     public static boolean checkDeviceHasNavigationBar(Context activity) {  
  3.   
  4.         //通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有navigation bar  
  5.         boolean hasMenuKey = ViewConfiguration.get(activity)  
  6.                 .hasPermanentMenuKey();  
  7.         boolean hasBackKey = KeyCharacterMap  
  8.                 .deviceHasKey(KeyEvent.KEYCODE_BACK);  
  9.   
  10.         if (!hasMenuKey && !hasBackKey) {  
  11.             // 做任何你需要做的,这个设备有一个导航栏  
  12.             return true;  
  13.         }  
  14.         return false;  
  15.     }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
七色虎建站最新版 官网 http://74hu.cn 1、后台无法登录,或者网站无法留言 问题:网站能够运行,但后台登录后无法进去管理,或者无法留言,文章内容看不了? 原因:可能是服务器空间有权限问题,无法写入数据。 解决:请与购买商联系。 2、频频出现错误 问题:刚装完程序,网站虽然能够运行,但程序错误频频出现? 原因:可能程序是网友修改过的,也有可能程序版本太旧。 解决:请到官网下载最新的程序,如果没有解决请到官网反馈。 3、网站突发问题 问题:网站平时好好的,近几天突然出现很多的问题? 原因:可能是服务器问题,如网络攻击,也有可能是程序问题,如木马上传。 解决:保留数据库,其他全删掉。到官网下载最新的程序,删掉其中的空数据库,剩下的上传即可。 4、页面自动跳首页 问题:某个页面一点击就自动转到首页? 原因:可能是页面调用出错,系统有错误检查机制,遇到影响系统运行的错误就自动转首页。也有可能是浏览器兼容问题。 解决:仔细检查页面所有内容是否出错。如未能解决问题请到官网求助 5、如何修改管理目录 问题:目前管理地址/admin和/webadmin,容易被人访问 解决:修改管理文件夹的名称,修改db.asp文件,将wapadmin和webadmin对应修改即可,目前支持子目录功能,修改方式相同。 6、系统时间不正确 问题:系统当前时间与实际时间有偏差 原因:空间主机时间错误,或者是使用外国的主机 解决:后台配置-时间配置,输入正确的时间保存即可。系统就会自动修正时间 7、论坛无法管理和会员无法注册 问题:后台管理点击论坛管理出错,前台会员无法注册 原因:国内部分主机有关键词屏蔽 解决:打开config/bbs.asp文件,将bbsagree设定的内容清空,就是改为bbsagree="" 8.游客无法评论文章 问题:游客无法评论文章,总是显示“为提高评论质量,两次评论间隔必须大于10秒!”? 原因:系统时间错误 解决:联系空间购买商,或者启用程序时间修正功能,改系统时间为正确的北京时间。 9.首页空白,后台可以进 问题:系统升级后首页显示空白,但后台可以登录管理 原因:升级步骤出错 解决:按说明文档一步一步操作,升级程序后执行数据库升级补丁updateXXX.asp。如果没有解决请到官网反馈。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值