如何从Android设备中获取默认的HTTP用户代理及其默认设置?
谢谢
Nohsib
正如Varundroid在他的回答中提到的,
String userAgent = System.getProperty("http.agent");
对于Android 2.1及以上版本,这是更好的方法。
====================
来自Android源代码。
public static String getDefaultUserAgent() {
StringBuilder result = new StringBuilder(64);
result.append("Dalvik/");
result.append(System.getProperty("java.vm.version")); // such as 1.1.0
result.append(" (Linux; U; Android ");
String version = Build.VERSION.RELEASE; // "1.0" or "3.4b5"
result.append(version.length() > 0 ? version : "1.0");
// add the model for the release build
if ("REL".equals(Build.VERSION.CODENAME)) {
String model = Build.MODEL;
if (model.length() > 0) {
result.append("; ");
result.append(model);
}
}
String id = Build.ID; // "MASTER" or "M4-rc20"
if (id.length() > 0) {
result.append(" Build/");
result.append(id);
}
result.append(")");
return result.toString();
}
编辑:请参考Prakash的回答,他的方法更适用于2.1+。
尝试使用http://developer.android.com/reference/android/webkit/WebSettings.html#getUserAgentString
请注意,该用户代理仅适用于Android默认使用的嵌入式WebKit浏览器。不幸的是,你需要创建一个新的WebView对象来获取用户代理。幸运的是,用户代理很少改变,因此您只需要在应用程序生命周期中运行此代码一次(除非您不关心性能)。只需执行以下操作:
String userAgent = new WebView(this).getSettings().getUserAgentString();
或者,您可以使用JavaScript方法navigator.getUserAgent()
。
Android 获取用户代理
一种替代方法
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
String userAgent = WebSettings.getDefaultUserAgent(context);
}
new WebView(this).getSettings().getUserAgentString();
如果您想在后台线程中访问用户代理,请使用以下代码:
System.getProperty("http.agent")
要检查用户代理是否有效,请使用此链接:
https://deviceatlas.com/device-data/user-agent-tester