如何从Android设备获取默认的HTTP用户代理?

16

如何从Android设备中获取默认的HTTP用户代理及其默认设置?

谢谢
Nohsib

4个回答

37

正如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();
}   

这个方案不错,但如果未来设备的计划变更,则可能不准确。 - Oleg Vaskevich
1
该方案是一个规范,只要符合规范,您可以向其中添加任何值。 - Prakash Nadar

10

编辑:请参考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()


谢谢Oleg,如果您能友好地分享一些相关的代码片段,那将非常有帮助。 - Nohsib
1
好的,我编辑了我的回复。(下次记得先搜索一下。) - Oleg Vaskevich
为什么它更好? - Malachiasz

3

Android 获取用户代理

一种替代方法

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
    String userAgent = WebSettings.getDefaultUserAgent(context);
}

3
当您使用Web视图访问用户代理时,请确保在UI线程上运行以下代码: new WebView(this).getSettings().getUserAgentString(); 如果您想在后台线程中访问用户代理,请使用以下代码: System.getProperty("http.agent") 要检查用户代理是否有效,请使用此链接: https://deviceatlas.com/device-data/user-agent-tester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接