Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从android设备获取默认HTTP用户代理?_Android - Fatal编程技术网

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

如何从android设备获取默认HTTP用户代理?,android,Android,如何从android设备获取默认HTTP用户代理及其默认设置 谢谢 Nohsib编辑:参见Prakash的答案,对于2.1+来说哪个更好。 试一试 请注意,此用户代理仅适用于Android中默认使用的嵌入式WebKit浏览器。不幸的是,您需要创建一个新的WebView对象来获取用户代理。幸运的是,用户代理不会经常更改,因此您应该只需要在应用程序生命周期中运行此代码一次(除非不关心性能)。只要做: String userAgent = new WebView(this).getSettings()

如何从android设备获取默认HTTP用户代理及其默认设置

谢谢

Nohsib编辑:参见Prakash的答案,对于2.1+来说哪个更好。

试一试

请注意,此用户代理仅适用于Android中默认使用的嵌入式WebKit浏览器。不幸的是,您需要创建一个新的WebView对象来获取用户代理。幸运的是,用户代理不会经常更改,因此您应该只需要在应用程序生命周期中运行此代码一次(除非不关心性能)。只要做:

String userAgent = new WebView(this).getSettings().getUserAgentString();

或者,您可以使用JavaScript方法
navigator.getUserAgent()

,正如Varundroid在回答中提到的那样

String userAgent = System.getProperty("http.agent"); 
对于Android2.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();
}   

使用web视图访问用户代理时,请确保运行

newwebview(this.getSettings().getUserAgentString()

在UI线程上

如果要在后台线程上访问用户代理。 使用

System.getProperty(“http.agent”)

要检查用户代理是否有效,请使用此 另一种选择

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

谢谢你,Oleg,如果你能在同一个网站上分享一些代码片段,会有帮助的。好的,我编辑了我的回复。(下次,别忘了先搜索。)这很好,但如果方案在将来的设备中更改,则可能不准确。方案是规范,因此只要符合规范,就可以向其添加任何值。