【问题标题】:How to check if user is using Android browser?如何检查用户是否使用安卓浏览器?
【发布时间】:2011-10-18 05:08:09
【问题描述】:

我的 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 以及是否执行某些操作,所以我使用以下代码:

<s:if test="%{#android=='false'}">
   <a href="/myUrl"></a>
</s:if>
<s:else>
  ....
</s:else>

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

谢谢!

【问题讨论】:

    标签: java jquery jsp struts2


    【解决方案1】:
    String userAgent = request.getHeader("User-Agent");
    boolean isAndroid = (userAgent != null && !userAgent.isEmpty() && userAgent.toLowerCase().contains("android"));
    

    【讨论】:

      【解决方案2】:

      您正在与字符串 "false" 进行比较,但应该检查实际的布尔值,并且可以根据需要使用 &lt;s:if test="android"&gt;&lt;s:if test="!android"&gt;

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

      说了这么多,为什么要那样做呢?

      【讨论】:

        【解决方案3】:

        在jsp中

        <c:set var="browser" value="${header['User-Agent']}" scope="session"/>
        

        【讨论】:

          【解决方案4】:

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

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

          去看看吧..

          谢谢。

          【讨论】:

            【解决方案5】:

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

            <s:if test="${android eq false}">
               <a href="/myUrl"></a>
            </s:if>
            

            <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
            <s:if test="${fn:contains(header['User-Agent'],'Android'}">
               <a href="/myUrl"></a>
            </s:if>
            

            【讨论】:

            • %{} 是 Struts 2 的 OGNL 转义;它不是 JSP EL。
            猜你喜欢
            • 2018-01-12
            • 1970-01-01
            • 2013-09-12
            • 1970-01-01
            • 2014-12-26
            • 1970-01-01
            • 2012-03-01
            • 2011-11-26
            相关资源
            最近更新 更多