Java 使用UADetector从用户代理获取Android设备名称
我正在使用Google App Engine解析此用户代理,如下所示:Java 使用UADetector从用户代理获取Android设备名称,java,android,google-app-engine,user-agent,Java,Android,Google App Engine,User Agent,我正在使用Google App Engine解析此用户代理,如下所示: Mozilla/5.0 (Linux; U; Android 2.2; en-ca; GT-P1000M Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 UserAgentStringParser parser = UADetectorServiceFactory.getResourceModulePars
Mozilla/5.0 (Linux; U; Android 2.2; en-ca; GT-P1000M Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
UserAgentStringParser parser = UADetectorServiceFactory.getResourceModuleParser();
UserAgent ua = parser.parse(anyUserAgentString);
if (ua.getKnownFragments().contains(KnownFragments.GT_P1000M)) {
System.out.println("Seems to be a Galaxy Tab GT-P1000.");
} else if (ua.getKnownFragments().contains(KnownFragments.IPAD)) {
System.out.println("Seems to be an iPad.");
} else if (ua.getKnownFragments().contains(KnownFragments.IPHONE)) {
System.out.println("Seems to be an iPhone.");
}
我可以getOperatingSystem()
,但是我不能像GT-P1000M那样获得Android设备名
我该怎么做
谢谢此功能经常被请求,但目前尚未实施。为了能够实现这一点,我们需要一个包含相应设备信息的大量用户代理字符串列表。我认为我们没有得到这份清单,但我们应该能够部分实施(按需)
在过去的几天里,我考虑实现一组已知片段,以便您可以编写如下内容:
Mozilla/5.0 (Linux; U; Android 2.2; en-ca; GT-P1000M Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
UserAgentStringParser parser = UADetectorServiceFactory.getResourceModuleParser();
UserAgent ua = parser.parse(anyUserAgentString);
if (ua.getKnownFragments().contains(KnownFragments.GT_P1000M)) {
System.out.println("Seems to be a Galaxy Tab GT-P1000.");
} else if (ua.getKnownFragments().contains(KnownFragments.IPAD)) {
System.out.println("Seems to be an iPad.");
} else if (ua.getKnownFragments().contains(KnownFragments.IPHONE)) {
System.out.println("Seems to be an iPhone.");
}
如果此功能可以帮助您,请参与。此功能将在上讨论。非常感谢您的任何反馈或帮助
(我是UADetector的作者。)谢谢你的评论。为什么不从用户代理字符串中获取它?因为它取决于设备和/或软件生产商。HTTP头中的用户代理标准化程度很低,每个生产者实现它的方式都略有不同。这就是为什么存在这样一个工具的原因之一。有关用户代理字符串格式的更多信息,请访问。