User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA

是什么:它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。

什么用:通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。

对于Android开发者,如何获取UserAgent:

1.首先在你的Activity对应的xml布局文件中加入WebView控件:

1. <WebView  
2. android:id="@+id/id_wv_ua"  
3. android:layout_width="match_parent"  
4. android:layout_height="match_parent"></WebView>


2.在Activity中加如下代码:

1. public class Ano extends Activity {  
2.   
3.     private WebView webview;  
4.   
5.     @Override  
6.     protected void onCreate(Bundle savedInstanceState) {  
7.   
8.         super.onCreate(savedInstanceState);  
9.         setContentView(R.layout.activity_ano);  
10.   
11. webview = (WebView) this.findViewById(R.id.id_wv_ua);  
12.         // 得到WebSettings对象  
13. settings = webview.getSettings();  
14.         // 如果访问的页面中有JavaScript,则WebView必须设置支持JavaScript,否则显示空白页面  
15.         webview.getSettings().setJavaScriptEnabled(true);  
16.         // 获取到UserAgentString  
17. userAgent = settings.getUserAgentString();  
18.         // 打印结果  
19.         Log.i("TAG", "User Agent:" + userAgent);  
20.     }  
21. }



最后,如果你想让WebView能够加载来自网络的页面,别忘了在AndroidManifest.xml文件中加入INTERNET权限。


1. <uses-permission android:name="android.permission.INTERNET" />



输出结果:

android 获取设备的端口 安卓获取ua_webview


截图字体有点小,可以在上面图片上点击右键,选择在新标签页中打开图片。

或者看下面输出结果,以下就是userAgent的内容:

I/TAG: User Agent:Mozilla/5.0 (Linux; Android 4.4.4; SAMSUNG-SM-N900A Build/tt) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36


修改:

为了便于WEB端统计分析,需要将APP的 user-agent 作特征标记,所以搜索了一下Androidwebview的User-Agent设置方法,具体如下:

// 修改ua使得web端正确判断  
String ua = webview.getSettings().getUserAgentString();  
webview.getSettings().setUserAgentString(ua+"; 自定义标记");


WebSettings settings = webview.getSettings();  
        settings.setUserAgentString("app/XXX");//添加UA,  “app/XXX”:是与h5商量好的标识,h5确认UA为app/XXX就认为该请求的终端为App  
        settings.setJavaScriptEnabled(true);  
  
        //设置参数  
        settings.setBuiltInZoomControls(true);  
        settings.setAppCacheEnabled(true);// 设置缓存  
  
        webview.setWebChromeClient(new WebChromeClient());  
  
        webview.loadUrl(loadurl);