如何检查用户是否使用Android浏览器?

我的Util.java包含以下方法:

public static boolean isAndroid(HttpServletRequest request) { boolean retVal = false; String browser = request.getHeader("User-Agent"); if (browser != null && !browser.trim().equals("") && browser.contains("Android")) { retVal = true; } return retVal; } 

我在BaseAction.java下面的代码(它还有HttpServletRequest类型的请求变量)扩展了ActionSupport并实现了ServletRequestAware,ServletResponseAware。

 public boolean isAndroid(){ return Util.isAndroid(request); } 

现在,我想检查JSP是否设备是android并且是否执行某些操作,所以我使用下面的代码:

     ....  

但上面的代码似乎不起作用。 可以任何人建议为什么它不工作&如果有另一种方法来检查JSP,看看用户是否使用Android浏览器?

谢谢!

您正在与字符串"false"进行比较,但应该检查实际的布尔值,并且可以根据需要使用

此外,您在属性名称前面加上# ,这对于推送到堆栈的值不是必需的 – #字符仅用于堆栈上下文中的命名值。

所有这一切,为什么这么做呢?

 String userAgent = request.getHeader("User-Agent"); boolean isAndroid = (userAgent != null && !userAgent.isEmpty() && userAgent.toLowerCase().contains("android")); 

在jsp中

  

我想下面的javascript代码会对你有所帮助;

 var ua = navigator.userAgent.toLowerCase(); var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { // Do some action you want to! } 

看看吧..

谢谢。

这是您在这里使用的EL吗? 我记得$是我们在EL中使用的字符,而不是代码中的%字符。 在与android属性进行比较时,我认为你不需要使用带有’false’的单引号。 所以我认为这应该有效。 但请检查您是否可以先在页面中访问“android”变量。 检查以下代码是否有效。

    

要么

 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>