2013-04-23 25 views
5

Tôi đang tìm cách dễ dàng phát hiện xem người dùng của tôi có đang sử dụng máy tính bảng hay trên máy tính toàn diện hay không. Bất kỳ ý tưởng làm thế nào để làm điều đó?Phát hiện máy tính bảng ở Vaadin 7

getSession(). GetBrowser(). IsTouchDevice() sẽ không hoạt động với ngày càng nhiều máy tính có màn hình cảm ứng. Và getBrowser() không được dùng nữa trong Vaadin 7.

Tôi không sử dụng vaadin-touchkit (phải không?)

Kính trọng, Rob.

Trả lời

5

Dưới đây là một cách một cho Vaadin 7:

trong UI.init() bạn có được những thông số VaadinRequest, mà bạn có thể cast (sau khi loại séc) để VaadinServletRequest và sử dụng getHttpServletRequest để có được những yêu cầu HTTP cơ bản. Điều này bạn có thể sử dụng để kiểm tra "User-Agent". Cái gì như:

if (request instanceof VaadinServletRequest) { 
    HttpServletRequest httpRequest = ((VaadinServletRequest)request).getHttpServletRequest(); 
    String userAgent = httpRequest.getHeader("User-Agent").toLowerCase(); 

    // TODO: Check user agent for all tablet matching keywords 
    if (userAgent.contains("ipad")) { 
     //... 
    } 

} 
2

Bạn cũng có thể nhận header User-Agent HTTP với

Page.getCurrent().getWebBrowser().getBrowserApplication() 

Nó có vẻ như không có thuộc tính được gửi trong tiêu đề để differenciate giữa máy tính bảng hoặc máy tính nhưng bạn có thể tìm thấy cho dù đó là một màn hình cảm ứng bằng cách sử dụng.

if(Page.getCurrent().getWebBrowser().isTouchDevice()){ //..} 
  • getWebBrowser không deprectated lên đến phiên bản 7.4.7
Các vấn đề liên quan