这个任务是在networking服务器端获得一些设备的统计数据。 为此,我想知道特定Android设备上默认浏览器的用户代理string,例如:
有一个简单的方法来了解它吗? 有没有一个众所周知的列表,将设备名称映射到用户代理string? 另外,如果我应该采取不同的方法 – 请咨询。
我build议你修改一个现有的解决scheme,比如用perl写的Apache Mobile Filter 。 它使用51Degrees XML文件与约70k用户代理。 您只需要find有趣的数据,然后修改AMF脚本,以便收集有趣的数据。 更多51Degrees和AMF也可以用来识别用户的设备是否是移动的,它是屏幕尺寸等。
在我看来,从Android设备的基础上的各种用户代理计数命中您应该使一个URL指向服务器。 在应用程序的开始获取用户代理并发送到您的服务器。
我运行这个代码来获取用户代理
WebView mes = new WebView(this); String str = mes.getSettings().getUserAgentString(); Log.i("My User Agent", str);
在三星平板电脑10.1英寸模拟器我有用户代理
Mozilla/5.0 (Linux; U; Android 3.0; en-us; sdk Build/HONEYCOMB) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13
并在Nexus仿真器上得到
Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; google_sdk Build/MR1) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
虽然这不是直接的答案,但我想提出这个问题:
请注意,客户端的用户代理可以很容易地修改。 例如在编程方面:
HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); HttpProtocolParams.setUserAgent(params, "WAHAHAHA"); HttpConnectionParams.setConnectionTimeout(params, HTTP_CONNECTION_TIMEOUT); HttpConnectionParams.setSoTimeout(params, HTTP_READ_TIMEOUT); HttpClient newHttpClient = new DefaultHttpClient(params);
当使用这个HttpClient
访问你的网站时,用户代理将是“WAHAHAHA”
另外,市面上的一些网页浏览器如海豚浏览器允许用户input他们想要的任何用户代理组合。
因此,我认为从用户代理收集的命中统计信息将不是那么可靠,我会build议find另一个标准来收集命中计数信息=]
你可以在这里find用户代理的列表
并在服务器上检查它们
签出UserAgentString.com 。 它还有一个Android Webkit浏览器用户代理string列表。
他们也有一个API来parsingUAstring,并返回一个键值对或JSON列表。
创build一个Webview并使用http://developer.android.com/reference/android/webkit/WebSettings.html#getDefaultUserAgent%28android.content.Context%29 ,没有列表将设备名称映射到用户代理,通过我build议发送到服务器的设备types和用户代理由移动运行您的应用程序。